我正在尝试使用inarray但它总是返回true?有任何想法吗? (李的所有都在显示)
$("#select-by-color-list li").hide();
// get the select
var $dd = $('#product-variants-option-0');
if ($dd.length > 0) { // make sure we found the select we were looking for
// save the selected value
var selectedVal = $dd.val();
// get the options and loop through them
var $options = $('option', $dd);
var arrVals = [];
$options.each(function(){
// push each option value and text into an array
arrVals.push({
val: $(this).val(),
text: $(this).text()
});
});
};
//This is where it is returning true...
if($.inArray('Aqua', arrVals)) {
$("#select-by-color-list li#aqua").show();
};
if($.inArray('Army', arrVals)) {
$("#select-by-color-list li#army").show();
};
最佳答案
您需要这样做:
if( $.inArray('Aqua', arrVals) > -1 ) {
或这个:
if( $.inArray('Aqua', arrVals) !== -1 ) {
The
$.inArray()
method返回基于0
的项目索引。如果没有项目,则返回-1
,if()
语句将其视为true
。从文档:
编辑:而不是将两个值都作为一个对象推送到数组中,只需使用一个或另一个,这样您就可以使用一个字符串数组来构建多个选择器。
一种方式是这样的:
// Create an Array from the "value" or "text" of the select options
var arrVals = $.map( $dd[0].options, function( opt, i ){
return opt.value || opt.text;
});
// Build a multiple selector by doing a join() on the Array.
$( "#" + arrVals.join(',#') ).show();
如果数组看起来像:
['Army','Aqua','Bread'];
结果选择器将如下所示:
$( "#Army,#Aqua,#Bread" ).show();
关于jquery - jQuery .inArray()始终为真吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4558086/