jQuery委托函数

时间:2012-09-08 00:12:49

标签: jquery

这个问题我显示的问题。

http://jsfiddle.net/mjmitche/Sy2G4/

我正在使用jQuery delegate()来创建将响应同一点击事件的段落,即使这些新段落是在文档之后创建的。我知道委托已被on()取代,但我不认为on()具有该功能。无论如何,我甚至不能让代表以我想要的方式工作。正如您在小提琴中看到的那样,新段落对点击不敏感。

你能解释一下我做错了吗?

    $(document).ready(function(){

        $('p').delegate(this, 'click', function(){
        $(this).after('<p>"No click me!"</p>');   
        });

    });​


<p>click me!</p>​

4 个答案:

答案 0 :(得分:2)

jQuery on与委托合作。

$('.mywrapper').on('click', 'p', function(){
   $(this).after('<p>No, click me!</p>'); 
});​

HTML

<div class="mywrapper">
    <p>Click me!</p>
</div>​

您选择容器元素(会挂起的东西)并告诉它从段落标记(当前和未来)触发。

JSFiddle Example

答案 1 :(得分:1)

您错误地将点击处理程序委派给p。相反,您的代码应该更像:

$('body').delegate('p', 'click', function(){/*your click handler*/});

不同之处在于,现在侦听器已连接到body,任何传播到它的点击事件都会根据p选择器资格进行验证,然后才会执行回调。

Fiddled

答案 2 :(得分:0)

试试这个:

$(document).ready(function(){

    $('body').delegate('p', 'click', function(){
        $(this).after('<p>"No click me!"</p>');   
    });
});​

答案 3 :(得分:0)

试试这个

$(document).ready(function(){
    $('body').delegate('p', 'click', function(){
        $(this).after('<p>"No click me!"</p>');   
    });
});​

DEMO