【问题标题】:jQuery .is(":visible") works in Firefox but not Chrome [duplicate]jQuery .is(":visible") 适用于 Firefox 但不适用于 Chrome [重复]
【发布时间】:2012-02-25 06:37:42
【问题描述】:

可能重复:
jquery .is(“:visible”) not working in Chrome

我正在尝试获取数组中的所有可见项。它在 Firefox 中运行良好,但在 Chrome 中运行良好。

这是我的代码:

$.each (t.config.promoInput, function (i, v) {
    var size = 0;

    $.each ($(v).find('option'), function (i, v) {
        $(v).show() // Show all options in <tt>$(v)</tt>.
            .not(':first-child') // Don't hide <tt>(All)</tt>.
            .not(':Contains("' + t.config.searchSpanInput.val() + '")') // Don't hide options that match the searchCriteria.
            .hide(); // Hide everthing that doesn't match or isn't (All).

        if ($(v).is(":visible")) {
            size++;
        }
    });
});

在 Firefox 大小增量中,而 Chrome 大小保持等于 0。

EDIT: :Contains 是我自己对 jQuery 库的补充。它是 :contains 的不区分大小写版本。

【问题讨论】:

  • HTML 是什么样的?
  • 请注意,您必须关闭两个each 代码块
  • @Aram,它们总是引用具有这些名称的最接近的已定义变量。因为iv 是使用的函数的参数..(最里面的)
  • 还有一个事实是你有“:Contains”(而不是“:contains”,小写)只是一个错字?
  • 这在 IE 中有效吗?您是否在选择中使用 &lt;option&gt;?如果是这种情况,使用 &lt;option&gt; 标签很困难,并且浏览器的行为非常不同

标签: javascript jquery


【解决方案1】:

您为什么不简单地检查"display" 属性,如果它是"none",那么它是隐藏的,如果它是"inline",它是可见的:

$.each (t.config.promoInput, function (i, v) {
    var size = 0;

    $.each ($(v).find('option'), function (i, va) {
        $(va).show() // Show all options in <tt>$(v)</tt>.
            .not(':first-child') // Don't hide <tt>(All)</tt>.
            .not(':Contains("' + t.config.searchSpanInput.val() + '")') // Don't hide options that match the searchCriteria.
            .hide(); // Hide everthing that doesn't match or isn't (All).

    });
    //add only visible options
   if ($(va).css("display") === "inline") {
        size++;
    }
});

看这里http://jsfiddle.net/gwbTm/2/(我用 Chrome 测试过)。
我认为设置&lt;option&gt; 的可见性会导致浏览器出现问题(尤其是 IE)

【讨论】:

  • 这会在 Chrome 和 Firefox 中产生不同的结果
【解决方案2】:

隐藏和显示,(启用/禁用)选项不支持跨浏览器(禁用/启用)。有关您的问题的一种可能解决方案,请参阅此问题:jQuery disable SELECT options based on Radio selected (Need support for all browsers)

一旦你把选项修剪下来,你就可以使用长度来获得大小。

【讨论】:

    猜你喜欢
    • 2011-08-21
    • 2011-05-24
    • 2019-11-15
    • 1970-01-01
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    • 2013-05-03
    相关资源
    最近更新 更多