我知道对于动态dom元素我需要使用jQuery.fn.on或delegate,但如果我移动'元素容器附加到dom中的另一个元素,点击不再起作用。
以下是重现问题的jsFiddle: http://jsfiddle.net/j0L7c51f/
目前我使用以下绑定方法:
$('#commoditySelector').on( 'click', 'li.available', function() {
var cmID = $(this).attr('data-cmid');
$('#debug').html('commoditySelected: '+ cmID);
});
如果我注释掉使用appendTo()移动ul元素的代码行,则click事件绑定工作正常。
答案 0 :(得分:3)
问题是由于您使用mousemove
而不是委托事件处理程序引起的,因为每次鼠标移动时都会重新构建HTML。这意味着委托事件处理程序在单击的元素上被正确触发,但该元素会立即从DOM中删除,因此事件在传播到要处理的DOM之前被取消。
要解决此问题,请改用mouseenter
上的a
事件:
$('#commodityCategories li a').mouseenter(function(e) {
// your code...
});