代码之家  ›  专栏  ›  技术社区  ›  Master Morality

jquery:将单击委托给包含其他元素的元素

  •  2
  • Master Morality  · 技术社区  · 15 年前

    所以我得到了$delegate的要点,我知道为什么它要做它正在做的事情,但我想知道是否有一个工作在附近。

    我有包含跨度的链接元素,比如:

    <a href='#'>
        <span>Person Name</span>
        <span>Person Info</span>
    </a>
    

    我在jquery中使用以下代码进行事件委托:

    containerElement.delegate('click','a',function(){...});
    

    问题是,这只会在我单击不被跨度占用的空白区域时触发。我知道它是这样做的,因为委托只需将事件目标与“a”进行比较,以检查它是否应该激发委托,但是我也希望包括跨度,几乎包括 <a>...</a>

    怎么办?

    4 回复  |  直到 15 年前
        1
  •  2
  •   anomareh    15 年前

    根据您的评论,我认为您正在寻找以下内容:

    target.is('a, a > *');
    

    …或者类似的东西。

        2
  •  2
  •   Ali Habibzadeh    15 年前

    你写的是相反的。第一个参数是选择器,第二个参数是事件名

    $('body').delegate('a','click',function()。{ 警报(“嗨”); (});

        3
  •  0
  •   vinhboy    15 年前

    您尝试过jquery Live吗?

    http://api.jquery.com/live/

    它是内置的授权。

        4
  •  0
  •   Graeme    15 年前

    就像,Vinhboy建议的,我会用

    $("a").live("click", myFunction);
    
    function myFunction()
    {
       alert("Hello");
    }
    

    事实上,给你的a标签一个类,比如“mylink”,然后在上面执行

    $("a.myLink").live("click", myFunction);
    
    function myFunction()
    {
       alert("Hello");
    }