如何删除div?

时间:2011-03-21 20:41:46

标签: jquery css events click

我有一个问题。

我需要在jQuery中单击删除div。不是display: none;而是删除

  

$(“#div”)。live('click',function(){   $(this)._ _ _ _ _ _ _ _; });

.live('click').click()

之间有什么区别

谢谢!

编辑:感谢你的好朋友

现在,我在div2中有div1。 我点击div1时需要删除div1。但当我点击div2时,div1被删除了...... 为什么?

7 个答案:

答案 0 :(得分:5)

$("#div").live('click', function(){ 
      $(this).remove(); 
 });

Click仅适用于现有DOM元素,live也会考虑稍后添加到DOM中的元素。

答案 1 :(得分:2)

这是怎么做的:

$("#div").click(function() {
    $(this).remove();
});

someEventlive('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)

http://api.jquery.com/remove/

应该去

$(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)

.liveclick事件添加到现在和将来的任何匹配元素 。因此,如果您在某个时刻添加另一个匹配元素,它将自动拥有您的点击功能。