【问题标题】:jquery: custom selector not workingjquery:自定义选择器不起作用
【发布时间】:2011-11-07 21:11:42
【问题描述】:

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

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

这是我在中使用选择器的代码(我也试过现场)...

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

【问题讨论】:

  • 请定义“似乎不起作用”。
  • @Henning Makholm attachErrorMessage 函数没有触发。
  • @BoltClock 如何检查可见性 == 继承或可见性!= 隐藏
  • @bflemi3:你只需要知道它是否没有隐藏?如果它从其父代继承hidden 会怎样?
  • @BoltClock 还有另一个我无权访问的脚本正在更改可见性以在满足特定条件时在该跨度上继承。我只是想看看这个跨度何时不再将其可见性设置为隐藏

标签: jquery jquery-selectors custom-selectors


【解决方案1】:

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

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

编辑:如果你只需要知道一个元素是否不是'hidden',是否继承,你可以这样做:

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

【讨论】:

  • 由于某种原因这不起作用。我在萤火虫中放了一块手表 $("span#Request1_multiconditionvalidator2").css("visibility") 并且它等于隐藏。然后我满足了取消隐藏跨度的条件,它等于继承
  • 只是一个更新。我在萤火虫手表中试过这个...... $("span#Request1_multiconditionvalidator2:crazyvisible").attr("id") 并得到“语法错误,无法识别的表达式:语法错误,无法识别的表达式:可见性”
  • 我会给你答案,因为在正常情况下这会很好地工作。我认为我遇到了问题,因为我无权访问的另一个脚本导致我的代码出现问题。感谢您的帮助。
  • 没问题。希望你能把它整理好!
猜你喜欢
  • 2013-07-09
  • 1970-01-01
  • 2023-02-03
  • 1970-01-01
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多