2014-09-24 67 views
0

我目前有一個全面檢查,它會選擇所有沒有任何類的無序列表。然而,我現在需要添加一個例外,忽略整個<div>其中有'顏色'類(我認爲如果有一個沒有類的話,我會忽略我的下一個檢查,而不是'做點什麼')如何檢查它是否不在這個特定的類中,也沒有在所有這些類中

I有這樣的代碼目前不工作(不是語法不太清楚)。

$("div").not('.color').ready(function) { # unsure of this line 
    $('ul:not[class]').each(function() { # this bit works as planned 
     do something 
    }) 
}) 

我怎麼會去執行什麼,我已經計劃?提前

感謝您的任何意見。


編輯爲解決方案:

原來我的問題有點不清楚 - 因爲我也不確定如何說出我的問題,但是,它是由朗姆伯爾和T.J.克勞德。

我一直在尋找的竟然是解決辦法:

$("div:not(.color) ul:not([class])").each(function() { 
    if (!$(this).parents(".color")[0]) { 
      // do something 
    } 
}); 

感謝大家的幫助!

+0

您希望在'ul'元素上避免的類是否與'div's上要避免的相同,或者...? – 2014-09-24 22:31:12

回答

3

不總是用作:not(selector)而選擇器可以是屬性或類選擇器。因此,您可以將它寫在一行中,如下所示:

$("div:not(.color) ul:not([class])").each(function() { 
    // do something 
}); 
+0

+1絕對是最好的答案。 – Shomz 2014-09-24 22:17:06

+0

+1這就是我的問題所在 - 謝謝! – Rekovni 2014-09-25 22:53:28

1

元素根本沒有ready回調;如果您使用ready,則它始終是document上的ready事件,該元素沒有任何特定的事件。

如果你的目標是要作用於那些div秒,但沒有color類,那麼元素:

$("div").not(".color").each(function() { 
    // do something 
}); 

或者:

$("div:not(.color)").each(function() { 
    // do something 
}); 

(請注意,:not使用(),不是[],只接受簡單的選擇器[包括類選擇器]。)


如果你的目標是忽略有類color或者是有它元素內部的任何div元素,這是稍微複雜些:

$("div").not(".color").each(function() { 
    if (!$(this).parents(".color")[0]) { 
     // do something 
    } 
}); 

在那裏,我們篩選出具有類元素使用.not,然後使用.parents過濾掉內部內的元素,並使用each中的類。

+1

@伊恩:呃,你是對的,這不是一個沒有操作。它比這更糟糕:http://jsbin.com/jaselo/1 – 2014-09-24 22:22:03

+0

+1感謝您展示.parents位! – Rekovni 2014-09-25 22:52:44

0

要觸發所有沒有顏色類的DIV裏面所有的上行線路,這樣做:

$("div").not(".color").each(function() { 
    $(this).find('ul').each(function() { 
     // do something 
    }) 
}) 

注意$(this)在內環是爲了重要的是僅選擇了DIV的孩子的UL目前正在迭代。

下面是一個簡單的工作示例:http://jsfiddle.net/eh2cvb9d/

+0

耶,downvote ......迫不及待地想聽到。 – Shomz 2014-09-24 22:08:46

+1

不是我低調,但我相信你保留':不是'錯誤的語法 – LcSalazar 2014-09-24 22:12:59

+0

@LcSalazar是,我完全依靠OPs「#這個位按計劃工作」,謝謝你指出!我很確定誰低估了...... – Shomz 2014-09-24 22:14:28

0

試試這個:

$(document).ready(function() { 
    $('ul').each(function() { 
     if (!$(this).hasClass()) { 
      console.log('test'); //do something! 
     } 
    }); 
}); 

使用:not[class]似乎扔在控制檯的錯誤我。您還可以在ul選擇器內但在if語句之外添加一個循環來檢查每個li標記。

+0

我沒有讓你失望,但也許有人不喜歡你忽略整個div.color的東西。在這裏,我從一個+1成功開始SO。 :) – Shomz 2014-09-24 22:39:43

+0

好的,謝謝:)我會盡量記住在答案中儘可能多地包含提問者的規範。 – Firedrake969 2014-09-24 22:41:50

+1

沒問題。 :)是的,是的,只要你可以(當它不是多餘的時候),試着讓它完全回答你的答案。另外,您可能希望在評論內部移動評論者的評論。 – Shomz 2014-09-24 22:43:17

相關問題