2012-05-04 52 views
1

我是jQuery的新手,仍在學習語法。我需要幫助以特定形式遍歷所有複選框,並從服務器中刪除使用x的「值」設置的那些元素。語法我到目前爲止,這是不工作是:jQuery - 循環遍歷所有元素並刪除具有特定屬性的元素

$('#FormA > :checkbox').each(function() { 
    var i = $(this); 
    if(i.attr('value') == "-99") 
    { 
      i.remove(); 
    } 
}); 

它看起來讀取引擎蓋下的。每個()方法對所有的一個「Java的增強的for循環」式的迭代API後我傳遞給jQuery的DOM元素。不知道雖然...

感謝您的幫助!

+0

你能可能創建的jsfiddle來說明問題了嗎?完全有可能您的選擇器不符合您認爲應該的所有元素。 – Tejs

回答

3

大多數jQuery方法被施加到每一個元素在匹配組。要做你正在嘗試做的事情,你只需要選擇正確的元素集並致電remove。沒有必要爲each。例如:

$("#FormA > :checkbox[value='-99']").remove(); 

它使用一個"attribute equals" selector找到具有的-99一個value複選框的輸入元件。然後它從DOM中刪除所有選定的元素。

remove明確這一點的文檔:

取出集從DOM匹配的元素的。

+0

謝謝詹姆斯!很好的解釋... Matt –

3

我想這可能工作:

$("#FormA :checkbox[value=-99]").remove()

0

你的選擇將最有可能的工作,如果你使用$(「#備考:複選框」),你擁有了它,現在,順便要求複選框成爲該形式的直接後代。

4

嘗試使用屬性選擇器,

$('#FormA > :checkbox[value=-99]').remove(); 
1

Look Ma no jQuery!晚會晚了,但純粹的JS方式。

var form = document.getElementById("formA"); 

[].forEach.call(form.querySelectorAll('input[type="checkbox"][value="-99"]'),function(el){form.removeChild(el);});​ 

Live Demo

而且它的震級更快。

JS Perf

+0

我確實喜歡這個答案,但是可以通過突出顯示權衡來改善它。 http://caniuse.com/queryselector&Syntatic Sugar vs.獲得巨大的重要性規模。 – Carl

+0

此外,我只有一個級別的差異:http://jsperf.com/foreach-remove-vs-jqueryeach/3 – Carl

-1

使用本:

$('.YourClass:checked').each(function(){ 
i=$(this) 
if(i.val()=='-99'){i.remove()} 
}) 
相關問題