2017-09-27 49 views
0

我與現有的jQuery的工作(3.2.1版本)功能:

$('#example').on('click', 'tbody td:not(:first-child)', 
    function (e) { 
     // do stuff 
    }); 

在這種情況下,函數(e)如只採取行動TD不是該行的第一列。

如果我需要添加一些更多的條件(在至少有5個這樣的列的表中會發生什麼),該函數變得有點醜陋。

在測試中,我知道它可行,但有一個更好的方法來做到這一點。

$('#example').on('click', 'tbody td:not(:first-child):not(:nth- 
    child(2)):not(:nth-child(3))', 
function (e) { 
    // do stuff 
}); 

是否有更清晰的技術來指示選擇器中的一組無條件?我在想,我可以用一個函數替換選擇器字符串,但我還沒有看到使用的示例,即使在jQuery website上。

+3

':not(.excludeme)' –

+0

where .excludme is a class? – RandomHandle

+0

好吧,'excludeme'就是類名。 –

回答

1

@ lilezek的回答是一個很好的答案。如果您希望將您的目標縮短爲單行,則可以將字符串定義在其他位置的變量中,然後將該變量作爲選擇器傳遞給您的事件處理程序。

var selector_foo = 'tbody td:not(:first-child):not(:nth- 
child(2)):not(:nth-child(3))' 
... 
$('#example').on('click', selector_foo, 
    function (e) { 
     // do stuff 
}); 
+0

這兩種方法都有其優勢和挑戰,取決於您的生態系統。我可以upvote多個答案,但唉,我不能標記多個作爲「答案」。 – RandomHandle

1

您是否在尋找類似的產品this

$("#example") 
    .not(":first-child") 
    .not(":nth-child(2)") 
    .not(":nth-child(3)") 
    .on('click', 
    function (e) { 
    // do stuff 
    }); 

聲明:我沒有檢查這是否真的有效。

+0

我測試了@Kevin B的評論,它實際上是最簡單的。 ':not(.excludme)'我所需要做的就是裝飾我需要的特定列,它完美地工作。 – RandomHandle

+0

擁有排除類是更快的解決方案。但請記住,您也可以在這裏使用代碼示例鏈接「不」。 – lilezek

-5

使用類將是一個更簡單的解決方案。只需將想要使用的類添加到要排除的單元格中,然後像平常一樣選擇。

tbody td:not(.exclude)