我试图获取数组中的所有可见项。它在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。
编辑::包含是我自己对jQuery库的补充。它是一个不区分大小写的版本:contains。
答案 0 :(得分:0)
为什么不检查"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测试过)
我认为设置<option>
的可见性会导致浏览器出现问题(尤其是IE)
答案 1 :(得分:0)
跨浏览器(禁用/启用)不支持隐藏和显示,(启用/禁用)选项。有关您的问题的一种可能解决方案,请参阅此问题:jQuery disable SELECT options based on Radio selected (Need support for all browsers)
一旦你修剪了选项,你就可以使用长度来获得大小。