jquery:插入一个元素并在该元素上创建一个事件

时间:2011-08-17 09:27:21

标签: jquery events

这是事情 假设我有一个具有以下结构的html:

<div id="click"> add</div>
<div id="id">
<div class="item">1</div>
<div class="item">2</div>
</div>

我通过jquery点击这个“item”类创建了一些事件。

$('.class').click(function(){ alert('1');})

问题是,我想通过点击下面的“点击”div来添加另一个“项目”javascript

$('#click').click(function(){
$('#id').prepend('<div class="item">new</div>');
})

当然我希望这个“项目”也是可点击的,但它上面没有处理程序。 当然我可以通过唤起$('。class')来添加它。点击(....再一次,但事实并非如此,因为“item”1和“item”2 div上将有2个事件。

有人能提出什么建议吗? 提前致谢

4 个答案:

答案 0 :(得分:2)

您可以使用.live()

解决此问题
$('.item').live('click', 
    function(){ 
        alert($(this).text()); 
});

答案 1 :(得分:1)

$('.class').unbind('click');
$('.class').click(.....)

这将取消绑定.class元素

上的点击事件的所有现有事件处理程序

答案 2 :(得分:0)

http://api.jquery.com/live

$('.class').live('click', function(){ alert('1');})

答案 3 :(得分:0)

你没有一个名为“class”的课程:

所以我假设$('。class')。click(function(){alert('1');})实际上是$('。item')。click(function(){alert('1 “);})

鉴于此,我不太明白你的问题。你想做以下

单击带有类项的元素时: 1)显示值

点击带有id点击的元素时: 1)添加一个新元素,其中包含已定义事件处理程序的类项。

使用

$('。item')。live('click',function(){alert($(this).text());});

$( '#点击')点击(函数(){$( '#标识')前面加上( '新');})