2013-04-08 188 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