我有一个问题。
我需要在jQuery中单击删除div。不是display: none;
而是删除。
$(“#div”)。live('click',function(){ $(this)._ _ _ _ _ _ _ _; });
.live('click')
和.click()
谢谢!
编辑:感谢你的好朋友
现在,我在div2中有div1。 我点击div1时需要删除div1。但当我点击div2时,div1被删除了...... 为什么?
答案 0 :(得分:5)
$("#div").live('click', function(){
$(this).remove();
});
Click仅适用于现有DOM元素,live也会考虑稍后添加到DOM中的元素。
答案 1 :(得分:2)
这是怎么做的:
$("#div").click(function() {
$(this).remove();
});
someEvent
和live('someEvent')
之间的区别在于live
方法会跳过一些额外的箍,以确保在设置click事件处理程序后将元素添加到DOM 中,但它与设置处理程序的jQuery元素的选择器匹配,也将获得该处理程序。
使用更简单的单词:live
会影响“与此选择器匹配的所有元素,即使它们尚不存在”,而click
会影响“目前与此选择器匹配的所有元素”。
由于这种情况下的选择器是一个id选择器,这意味着将来可能不会添加另一个具有相同id的元素(ID在整个DOM中必须是唯一的),我只使用了click
而不是live
。
<强>更新强>
即使您点击{em> #div1
的任何子项,也会调用事件处理程序。这是由于事件冒泡行为。如果你想检查哪个元素是事件的“真正”来源,你需要这样做:
$("#div").click(function(eventData) {
if(eventData.target.id != 'div') {
// This will prevent the removal if any element
// other than #div _itself_ is clicked
return false;
}
$(this).remove();
});
答案 2 :(得分:2)
应该去
$(this).remove();
.click()仅绑定加载的DOM元素,而.live('click')适用于最初加载DOM后添加的DOM元素。
答案 3 :(得分:1)
$('#div').click(function() {
$(this).remove();
});
.live('click', function() { ... })
和.click(function() { ... })
之间的不同之处在于,live允许您现在和将来为事件附加处理程序,这意味着如果在DOM中更新此#div,事件处理程序将保留。例如,想象一下你有一个被AJAX调用替换的div的情况。如果您使用.live为此div注册click事件处理程序,则即使在DOM中刷新了div之后,事件处理程序仍然可以工作。如果使用.click
,那么如果重新创建元素,则需要重新附加处理程序。
答案 4 :(得分:1)
你的第一个问题:
$(this).remove();
你的第二个问题:
.click()
会将click事件添加到您选择的对象中。live('click')
会将事件添加到您选择的每个对象中,也包括您将来创建的对象。 / p>
答案 5 :(得分:1)
卸下摆臂();完全删除它 .empty()清空div。
$(“。myClass”)。live('click')将click事件绑定到每个元素,现在和将来。这意味着如果您添加一个类“myClass”的新div,那么实时点击事件也将适用于该类。
答案 6 :(得分:1)
.live
将click
事件添加到现在和将来的任何匹配元素 。因此,如果您在某个时刻添加另一个匹配元素,它将自动拥有您的点击功能。