2013-04-01 44 views
0

是否有可能檢查鏈中是否存在hasData?jQuery hasData作爲鏈?

E.g:

<div data-foo="yes">Foo</div> 

$("div").hasData("foo").css("color","red"); 
+1

'.hasClass'不起作用這樣的。它也不能鏈接。它返回一個布爾值。 –

+0

你期望'hasData'在這裏返回什麼? –

回答

1
(function ($) { 
    $.fn.hasData = function (data) { 
     if (this.data(data)) return this; 
     else return null; 
    }; 
})(jQuery); 
3

jQuery的方法鏈接仍然服從JS的規則。由於hasData返回布爾值,並且布爾值不具有jQuery方法,所以這不起作用。

要做到這一點,最簡單的方法是修改您的選擇使原來的收集已經過濾:

$("div[data-foo]") 
+1

+1感謝您解釋原因 –

2

嘗試使用.filter代替:

$("div").filter(function(){ 
    return $(this).data("foo"); 
}).css("color","red"); 

,甚至只是一個屬性選擇:

$("div[data-foo]").css("color","red"); 
0

Demo

$("div[data-foo=yes]").css("color","red");