1

我遇到的问题显示在这个小提琴上。

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

4 回答 4

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 示例

于 2012-09-08T00:19:53.987 回答
1

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

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

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

摆弄

于 2012-09-08T00:18:28.927 回答
0

试试这个:

$(document).ready(function(){

    $('body').delegate('p', 'click', function(){
        $(this).after('<p>"No click me!"</p>');   
    });
});​
于 2012-09-08T00:17:58.643 回答
0

试试这个

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

演示

于 2012-09-08T00:19:40.153 回答