jQuery:将点击委托给包含其他元素的元素

时间:2010-04-01 15:13:38

标签: jquery

所以我得到$ .delegate的要点,我知道为什么它正在做它正在做的事情,但我想知道是否有解决方法。

我的链接元素包含这样的跨度:

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

我在jQuery中使用以下代码进行事件委派:

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

麻烦的是,这只会在我点击没有被跨度占用的空白区域时触发。我知道这样做是因为委托只是简单地将事件目标与'a'进行比较以检查它是否应该触发委托,但是我也要包括跨度,几乎任何内容都在<a>...</a>

做什么?

4 个答案:

答案 0 :(得分:2)

你已经反过来写了。第一个参数是选择器,第二个参数是事件名称

$('body')。delegate('a','click',function(){                 警报( '喜');             });

答案 1 :(得分:2)

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

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

..或类似的东西。

答案 2 :(得分:0)

你试过jquery直播吗?

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

它是在代表团中建立的。

答案 3 :(得分:0)

就像,vinhboy建议的那样,我会使用

$("a").live("click", myFunction);

function myFunction()
{
   alert("Hello");
}

事实上,给你的标签一个类,如“myLink”,然后在那个

上执行
$("a.myLink").live("click", myFunction);

function myFunction()
{
   alert("Hello");
}