清除并附加html后,单击“不工作”

时间:2014-01-01 06:29:23

标签: javascript jquery html css

在我清除后点击不工作,并使用jquery将html附加到div中。 这是html代码

<div id="divMain">
</div>
<input id="btn" type="button" value="Clear&Add"/>

这是jQuery代码

var a = $('<a/>').attr({'id':'aH','href':'#'}).text('Hello');
a.click(function(){
    alert('hello');
});
$('#divMain').append(a);



$('#btn').click(function(){
   var newA = $('#aH');
    $('#divMain').html('');
    $('#divMain').append(newA);
});

这是jsfiddle

简单点击小提琴中的提醒链接,它会显示提醒。现在点击Clear&Add按钮。现在点击提醒。它不起作用。

3 个答案:

答案 0 :(得分:6)

您需要事件委派才能使用动态添加的元素绑定事件。您还需要创建标识为aH的elemet,因为您已从DOM中删除该元素而未保留该元素。

<强> Live Demo

$(document).on('click', '#aH', function(){
    alert('hello');
});

您可以尝试添加全局创建的a,而无需再次绑定点击。

$('#divMain').append(a);
  

委派事件的优势在于它们可以处理来自的事件   稍后添加到文档中的后代元素。通过   选择一个保证在当时存在的元素   委托事件处理程序附加,您可以使用委托事件   避免经常附加和删除事件处理程序,jQuery api

答案 1 :(得分:0)

您需要使用事件委派:

$('#divMain').on('click', a, function(){
    alert('hello');
});

更新小提琴:http://jsfiddle.net/W95wV/1/

答案 2 :(得分:0)

Click不适用于jQuery中动态创建的元素。在早期版本的jQuery中,我们可以使用在最近版本中已弃用的.live('click')。现在你可以使用.on更好地为动态元素工作,正如Adil所说。