inarray函数返回-1,即使它在我的数组中有值
例如。如果我的数组中有['3','7','43','44','45','46']
,当我选择值3或7时,它会显示正确的答案,然后当我选择其他值时,它会返回-1。
我的jQuery编码:
$(document).on("change", '#level',function() {
var valu = $('#level').val();
$.each(filterResults, function(index, item) {
if(jQuery.inArray(valu , item.id)!==-1){ //item.id has all array values
//my functions
}
}
});
然后是我的HTML编码
<select class="tb2" name="level" id="level">
<option value="">Select Level</option>
<option value="3">Pre Test</option>
<option value="7">Level 1</option>
<option value="43">Level 2</option>
<option value="44">Level 3</option>
<option value="45">Level 4</option>
<option value="46">Level 5</option>
</select>
console.log(valu,item.id)返回
44 3
44 7
44 43
<44> 44 4444 45
44 46
答案 0 :(得分:1)
尝试
if(jQuery.inArray(valu , filterResults)!==-1)
没有.each()
var filterResults = ['3','7','43','44','45','46'];
$(document).on("change", '#level',function() {
var valu = $('#level').val();
// $.each(filterResults, function(index, item) {
if(jQuery.inArray(valu , filterResults)!==-1){
//my functions
console.log(valu, $.inArray(valu, filterResults))
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<select class="tb2" name="level" id="level">
<option value="">Select Level</option>
<option value="3">Pre Test</option>
<option value="7">Level 1</option>
<option value="43">Level 2</option>
<option value="44">Level 3</option>
<option value="45">Level 4</option>
<option value="46">Level 5</option>
</select>
&#13;
答案 1 :(得分:0)
item.id
不包含数组,只包含一个id
。 $.inArray
仅适用于数组。试试这个:
$(document).on("change", '#level',function() {
var valu = $('#level').val();
$.each(filterResults, function(index, item) {
if(valu == item.id){ // if item.id is equal to valu (e.g. '7' == '7')
// some code
}
});
});
或者,您可以使用$.grep()过滤结果,以确定ID是否在那里:
$(document).on("change", '#level',function() {
var valu = $('#level').val();
if( $.grep(filterResults, function(){return this.id == valu}).length ){
// some code
}
});
答案 2 :(得分:0)
var filterResults = ['3', '7', '43', '44', '45', '46'];
$('#level').change(function() {
var value = $(this).val();
if ($.inArray(value, filterResults) > -1) {
console.log(value + " EXISTS IN ARRAY");
} else {
console.log("FALSE");
}
});
Here's a FIDDLE 以获得进一步的帮助。