2013-01-24 60 views
3

在一個文檔中,我有大約25個包含具有不同名稱的表單的DIV。的DIV都具有相同的類名和看起來像這樣:每個jQuery函數

<div class="swoop" style="display:none"> 
    <form name="myFormXYZ" method="post"> 
    <input name="caption" type="hidden" value="19"> 
    </form> 
</div> 

我想寫的jQuery代碼將檢查與類的「趁虛而入」的所有div,如果任何的DIV包含一個名爲輸入字段「標題」其值爲x,那麼這些DIV的顯示屬性應該設置爲「block」。 x是1到1000之間的整數

到目前爲止,我想出了這一點:

$('.swoop').each(function() { 
    var capt = $(? ? ?).attr('value()'); 
    if (capt == x) {$(this).css.(display','block')} 
}); 

能jQuery的功能,甚至通過其顯示設置爲none的DIV迭代?

+0

具有'display:none'的元素不會呈現,但它仍在DOM中。所以是的,'$('。swoop')'將選擇所有具有'.swoop'類的元素。 –

回答

7

還有一種方法:

​​

這而是使用attribute selectors來查找具有特定值的輸入元素。 .has通過那些具有與傳遞的選擇器匹配的後代的元素來過濾元素,並且.show應該是不言自明的。

+0

是啊,對不起,那是我的壞...我的顯示器看起來像是有一個空間btw選擇器。 –

+0

已經有六個答案!謝謝Felix,@Omar和@Musa!直到明天我纔會有時間檢查這些。 – Commata

+0

感謝你們六個人回覆我的帖子。我爲所有六個人寫下了感謝信,但他們都失蹤了。 ? – Commata

1

你需要:

$('.swoop').each(function() { 
    var capt = $('input[name=caption]', this).val(); 
    if (capt == x) {$(this).css.('display','block')} 
}); 
+1

更改爲val() –

+0

有趣的是,您的答案中的代碼在我看來與上面的Matt的答案完全相同,但我的MSIE調試器爲您的解決方案提供了一個不同的錯誤消息:'expected identifier'。我知道,MSIE調試器通常不值多少...對不起,我沒有時間瞭解問題是否與我的代碼有關。 – Commata

1
var someInt = 7;  
$('.swoop').each(function() { 
    var capt = $('input[name=caption]', this).val()); 
    if (capt == someInt) {$(this).css('display','block');} 
}); 
+0

謝謝你,馬特。直到明天我纔會有時間嘗試這些解決方案! – Commata

+0

我的MSIE調試器一直在說「預計」;但我找不到失蹤的地方。 – Commata

+0

@ user1781623,我找到了。它在「if」塊中缺失。感謝您的高舉。 – Matt

0

是,jQuery的可訪問內容,即使他們是隱藏的。

在jQuery調用中使用當前項作爲上下文來查找其中的元素。使用val方法來獲取輸入的值,你就需要解析的值來打開串入一個數字:

var capt = parseInt($('input[name=caption]', this).val(), 10); 
if (capt == x) { $(this).css('display','block'); } 
1
$('.swoop input[name="caption"]').each(function() { 
    var capt = $(this).val(); 
    if (capt == x) { 
     $(this).closest('.swoop').css('display','block') 
    } 
}); 
+1

'input [caption]'不會選擇任何元素。沒有元素具有「caption」屬性。 –

+0

感謝您的建議!這是我工作的唯一一個,除了上面的第一個,我接受了這個答案,因爲它是最短的。 – Commata

0
var v = 19;  
$('.swoop input[name=caption]').each(function() { 
      var capt = $(this).attr('value'); 
      if (capt == v) { 
      $(this).parents("div").andSelf().css('display', 'block'); 
      $(this).attr({ type: '' }); } 
     }); 
+0

試一試,得到錯誤消息「類型屬性不能更改」。對不起,沒有時間來解決問題是否在我的代碼中,因爲上面的第一個答案適用於我。 – Commata