jquery:自定义选择器不工作

时间:2011-08-31 18:51:52

标签: jquery jquery-selectors custom-selectors

我正在尝试创建一个自定义jquery选择器来返回css("visibility") == "inherit"的bool,但它似乎不起作用。以下是代码......

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

这是我正在使用选择器的代码(我也试过了)......

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

1 个答案:

答案 0 :(得分:1)

据我所知,您的选择器或.delegate()电话没有任何问题。问题是.css()函数返回一个元素的计算样式,所以你永远不会得到'inherit'作为值,因为那时它会被计算为元素父元素的任何样式。

您可以在this question中找到有关使用jQuery检查继承的CSS属性的更多信息 - 简而言之,这样做并不容易。

编辑:如果您只需要知道元素是否不是'hidden',无论是否继承,您都可以这样做:

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