[小菜一碟] 在 jQuery 新增可傳入參數的自定義 Filter

這次要來跟大家分享自定義可傳入參數的 jQuery Filter,我們在使用 jQuery 的 selector 時,多多少少會使用到一些內建的 Filter,像是 :odd:even、...等等,但是難免有時候會覺得不太夠用,比如說我要過濾出 Attribute 為 abc 開頭的 Element,這個就勢必得自己另外寫了,那麼我就利用這個例子來跟大家介紹在 jQuery 如何自定義一個可傳入參數的 Filter?

從 jQuery 1.8.1 開始,如果我們要自定義一個帶有參數的 Filter,jQuery 建議使用 createPseudo 方法,createPseudo 方法是 jQuery 所採用的 selector engine - Sizzle 自帶的一個方法,它存在的目的就是讓我們來做這件事的。

假定我的 Filter 名稱叫做 :attrStartsWith,作用就是可以過濾出 Attribute 為某字段開頭的 Element,那麼它寫出來就差不多像是這個樣子。

$.expr[":"].attrStartsWith 是宣告我有一個 :attrStartsWith 的 Filter,而我們過濾用的 function 就透過 $.expr.createPseudo 包裝起來指定給 $.expr[":"].attrStartsWith 就大功告成了,最後使用起來就像下面這個例子,成功過濾出 3 個含有 abc 字段開頭的 Element 。

參考資料