2013-03-26 45 views
0

我一直在环顾四周,但我还找不到解决方案。 我的代码是这样的:删除动态创建的内部选定的div

$('#addDiv').click(function() { 

      var divNum = divNum + 1; 
      var newdiv = document.createElement('div'); 
      var divIdName = 'mydiv'; 
      newdiv.setAttribute('id',divIdName+divNum); 
      newdiv.className = 'imgDiv'; 

}); 

$('#cont-div').on('click', function(e) { 

     //REMOVE clicked div 

}); 

我有一个名为“续-DIV”分区包含动态创建的div。 可能解决方案非常简单,但我找不到一种方法来识别'cont-div'内部的点击div,因此我可以将其删除。

回答

1

您可以使用事件委派,因为div s的动态创建:

$('#cont-div').on('click', 'div', function(e) { 

     //REMOVE clicked div 
     $(this).remove(); 

}); 
+0

也谢谢你!你的代码也是完美的! – 2013-03-26 20:41:08

0
$('#cont-div div').on('click', function(e) { 

    var clickedDiv = e.target; 

    if(clickedDiv != e.currentTarget) 
    { 
     //Remove the clicked div if it is not the parent. 
     $(this).remove(); 
    } 

}); 
0

嗯,你的代码意味着你可能有使用相同ID多个元素。不要那样做,这会让事情变得更加困难。只需使用您已设置的类:

$('.imgDiv').on('click', function() { 
    $(this).remove(); 
}); 
+1

有关'id's的观点是一个很好的观点。代码的目的似乎是生成唯一的'id's,尽管从我们可以看到的代码中,这可能并非如此。 – 2013-03-26 20:29:25

0

您可以使用jQuery的remove()要删除的元素。您还需要一个委托来处理动态插入元素上的事件。

Working Demo

HTML:

<input id="addDiv" type="button" value="click!" /> 

的Javascript:

$(function(){ 
    $('body').on('click','.imgDiv',function(){ 
     $(this).remove(); 
    }); 
}); 

编辑:缩短下来的代码片段,现在只显示相关部分。

+0

非常感谢!它工作完美! – 2013-03-26 20:38:24