2011-08-31 182 views
0

我想創建一個自定義jquery選擇器來返回css("visibility") == "inherit"布爾,但它似乎並沒有工作。下面是代碼...jquery:自定義選擇器不工作

$.expr[":"].crazyvisible = function(a) { 
    var elem = $(a); 
    return (elem.css("visibility") == "inherit"); 
}; 

這是我使用的選擇(我也試過直播)代碼...

$(document).ready(function() { 
    $("span#Request1_multiconditionvalidator2").delegate(":crazyvisible","attachErrorMessage", function() { 
     ... 
    } 
} 
+0

定義「似乎並不奏效」,請。 –

+0

@Henning Makholm attachErrorMessage函數不會觸發。 – bflemi3

+0

@BoltClock如何檢查可見性==繼承或知名度!=隱藏 – bflemi3

回答

1

沒有什麼不對您的選擇或據我所知,你的.delegate()電話。問題是.css()函數返回元素的計算樣式,因此您永遠不會得到'inherit'作爲值,因爲它隨後會計算爲元素父級具有的任何樣式。

關於使用jQuery在this question中檢查繼承CSS屬性的更多信息,簡而言之,這並不容易。

編輯:如果你只需要知道,如果一個元素是不是'hidden',不管是繼承與否,你可以這樣做:

$.expr[":"].crazyvisible = function(a) { 
    var elem = $(a); 
    return elem.css("visibility") != "hidden"; 
}; 
+0

由於某種原因,這是行不通的。我把一塊手錶放在$(「span#Request1_multiconditionvalidator2」).css(「visibility」)的firebug中,它等於隱藏。然後我遇到了取消隱藏範圍的條件,它等於繼承 – bflemi3

+0

只是一個更新。我試圖在firebug手錶... $(「span#Request1_multiconditionvalidator2:crazyvisible」)。attr(「id」)並得到「語法錯誤,無法識別的表達式:語法錯誤,無法識別的表達式:知名度」 – bflemi3

+0

我打算給你答案,因爲在正常情況下,這將工作完美。我認爲我遇到了問題,因爲我無法訪問的另一個腳本導致我的代碼出現問題。謝謝你的幫助。 – bflemi3