【发布时间】:2014-05-26 15:10:10
【问题描述】:
- 有一个父 div
dvParent -
dvParent里面有一个子 divdvjQuery
我假设当我清空 dvParent 时,任何在子 div dvjQuery 上开启/委托的事件都将被删除,但这不会发生。
因此,当我单击删除按钮以清空父 div dvParent 并重新创建子 div dvjQuery 时,我仍然可以看到 on.mouseenter 工作。为什么?
JS:
$(document).ready(function () {
var dvjQuery = $("<div/>").attr("id", "dvjQuery").text("some text");
$('#btnAdd').attr('disabled', 'disabled');
$("form").on({
mouseenter: function () {
$(this).addClass('highlight');
},
mouseleave: function () {
$(this).removeClass('highlight');
}
}, '#dvjQuery');
$('#btnRemove').click(function () {
$("#dvParent").empty();
$(this).attr('disabled', 'disabled');
$('#btnAdd').removeAttr('disabled');
});
$('#btnAdd').click(function () {
$("#dvParent").html(dvjQuery);
$(this).attr('disabled', 'disabled');
$('#btnRemove').removeAttr('disabled');
});
});
HTML:
<form>
<div id="dvParent">
<div id="dvjQuery">some text</div>
</div>
<br/><br/>
<input type='button' id='btnRemove' Value=' Remove Div ' />
<input type='button' id='btnAdd' Value=' Add Div ' />
<br/><br/>
</form>
更新:
奇怪的是,这是有效的。为什么 ? :JSFIDDLE
我没有在这个上使用off。
//
//HTML
//
<input type='button' id='btnRemove' Value=' Remove Div ' />
<input type='button' id='btnAdd' Value=' Add Div ' />
<div id="raw">
<ul id="temp">
<li>One</li>
</ul>
</div>
//
//JS
//
$(document).ready(function () {
var list = $('<ul id="temp"><li>One</li></ul>');
$('#btnAdd').attr('disabled', 'disabled');
$("#temp").on({
mouseenter: function () {
$(this).addClass('highlight');
},
mouseleave: function () {
$(this).removeClass('highlight');
}
}, 'li');
$('#btnRemove').click(function () {
$("#raw").empty();
$(this).attr('disabled', 'disabled');
$('#btnAdd').removeAttr('disabled');
});
$('#btnAdd').click(function () {
$("#raw").append(list);
$(this).attr('disabled', 'disabled');
$('#btnRemove').removeAttr('disabled');
});
});
【问题讨论】:
标签: javascript jquery