2011-08-31 136 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