if ($("#makespan").is(":visible") == true) { 
    var make = $("#make").val(); 
}
else {
    var make = $("#othermake").val(); 
}

Make:<span id=makespan><select id=make></select><span id=othermakebutton class=txtbutton>Other?</span></span><span id=othermakespan style="display: none;"><input type=text name=othermake id=othermake>&nbsp;-&nbsp;<span id=othermakecancel class=txtbutton>Cancel</span></span>

上述代码在Firefox中运行流畅,但在Chrome中似乎不起作用.在Chrome中,即使是true也会显示.is(":visible") = false.

我正在使用以下jQuery版本:jQuery-1.4.3.min.js

jsFiddle-Link:http://jsfiddle.net/WJU2r/4/

推荐答案

jQuery的:visible Select 器似乎不适用于Chrome中的一些内联元素.解决方案是添加一种显示样式,如"block""inline-block",以使其正常工作.

还要注意,jQuery对可见内容的定义与许多开发人员略有不同:

Elements are considered visible if they consume space in the document.

换句话说,元素必须具有非零的宽度和高度才能占用空间并可见.

带有visibility: hiddenopacity: 0的元素被认为是可见的, 因为它们仍然占用布局中的空间.

另一方面,即使它的visibility被设置为hidden,或者不透明度为零,jQuery仍然是:visible,因为它消耗空间,当CSS明确表示它的可见性被隐藏时,这可能会让人困惑.

不在文档中的元素被认为是隐藏的;而jQuery则被认为是隐藏的 无法知道它们在追加到 文档,因为它取决于适用的样式.

所有选项元素都被认为是隐藏的,无论其 选定状态.

在隐藏元素的动画过程中,会考虑该元素 在动画结束前可见.在动画过程中显示 元素,则认为该元素在起始处的 动画.

看它的简单方法是,如果你可以在屏幕上看到元素,即使你看不到它的内容,它是透明的等等,它是可见的,也就是说,它占用了空间.

我稍微清理了一下您的标记,并添加了一个显示样式(i.e. setting the elements display to "block" etc),这对我很有效:

FIDDLE

Official API reference for :visible


从jQuery3开始,:visible的定义略有改变

jQuery 3略微修改了:visible的含义(因此 :hidden).
从此版本开始,将考虑元素 如果它们有任何布局框(包括零宽度的布局框),则为:visible 和/或高度.例如,br个元素和内联元素没有 内容将由:visible Select 器 Select .

Jquery相关问答推荐

在 Laravel 中使用 jQuery post 按相关值过滤 Select 选项,如何显示从控制器返回的数据?

Visual Studio - 将文本粘贴到 cshtml 中会删除文本

JQuery:$.get 不是函数

为什么 .join() 不能与函数参数一起使用?

jQuery 1.4.1 中缺少 JSON 字符串化?

使用 JSONP 时如何捕获 jQuery $.getJSON(或数据类型设置为jsonp的 $.ajax)错误?

什么是不使用 jQuery 的经验技术原因?

如何使用 jQuery 将表格的一行滚动到视图 (element.scrollintoView) 中?

在jQuery中获取所有选定复选框值的最佳方法

jQuery UI 自动完成宽度未正确设置

调用 jquery ajax - .fail vs. :error

根据属性'data-sort'对jQuery中的div进行排序?

使用 jQuery 将行添加到表的 tbody

jQuery .get 错误响应函数?

jQuery 判断 是否存在并且有一个值

如何使用 Twitter Bootstrap 弹出框进行 jQuery 验证通知?

如何在 Bootstrap 中创建切换按钮

在jQuery中获取CSS规则的百分比值

如果一个元素正在被动画,我如何用 jQuery 找出?

Twitter Bootstrap 中的树