2013-04-08 100 views
0

我有一个问题。是否可以删除<span>添加了javascript追加元素?Javascript附加/删除元素

当我尝试删除添加的跨度然后没有任何反应。

像这样:

<script type="text/javascript"> 
$(document).ready(function(){ 
    $('#SelectBoxData span').click(function(){ 
     var StatusID = this.id; 
     var StatusIDSplit = StatusID.split("_"); 
     var StatusText = $('#SelectBoxData #' + StatusID).text(); 

     $("#SelectBox").append('<span id=' + StatusID + '>' + StatusText + '</span>'); 
     $("#SelectBoxData #" + StatusID).remove(); 

     InputValue = $("#StatusID").val(); 
     if(InputValue == ""){ 
      $("#StatusID").val(StatusIDSplit[1]); 
     } 
     else{ 
      $("#StatusID").val($("#StatusID").val() + ',' + StatusIDSplit[1]); 
     } 
    }); 

    $('#SelectBox span').click(function(){ 
       var StatusID = this.id; 
     $("#SelectBox #" + StatusID).remove(); 
    }); 
}); 
</script> 

<div id="SelectBoxBG"> 
    <div id="SelectBox"><div class="SelectBoxBtn"></div></div> 
    <div id="SelectBoxData"> 
     <span id="StatusData_1">Admin</span> 
     <span id="StatusData_2">Editor</span> 
     <span id="StatusData_4">Test 1</span> 
     <span id="StatusData_6">Test 2</span> 
    </div> 
    <input type="hidden" id="StatusID" /> 
</div> 

请帮助我。

谢谢。

+2

可以相同的ID不能分配给JavaScript的多个元素。 – 2013-04-08 08:54:48

+1

仅供参考,'var StatusID = this.id; $(“#SelectBox#”+ StatusID).remove();'只会选择与'this'相同的元素。如果您已经有了对元素的引用,则不必再次搜索它!这很简单:'$(this).remove()'。 – 2013-04-08 08:58:48

回答

3

是的,你可以删除它们。但是,在存在事件处理程序之前,不能将它们添加到它们。此代码:

$('#SelectBox span').click(function(){ 
    var StatusID = this.id; 
    $("#SelectBox #" + StatusID).remove(); 
}); 

将只在代码运行时的#SelectBox内添加click事件处理程序<span>元素(所以,根据你提供的HTML代码,零个元素)。如果你想在事件处理程序作出反应,动态地添加的元素,那么你需要使用一个名为event delegation技术,使用.on()功能:

$('#SelectBox').on('click', 'span', function() { 
    $(this).remove(); // equivalent to the code you had before 
}); 
+0

太快!..... – 2013-04-08 09:01:38

+0

感谢您的回答和您的帮助。我解决了这个问题。 – 2013-04-08 09:41:07