我正在尝试使用与选中的复选框相关联的标签填充数组(rulesArray)。我还试图确保仅添加唯一值(这是!inArray
出现的位置)。我现在很确定这对于inArray
是不正确的语法。
目前我的错误是"Uncaught ReferenceError: inArray is not defined."
这是我的JS
$(document).ready(function(){
var rulesArray = [];
$('input:checkbox').click(function(){
$('input.selectBox').each(function(){
if(($(this).is(':checked')) && (!inArray($(this).parent().text(), rulesArray))){
rulesArray.push($(this).parent().text());
}
});
console.log(rulesArray);
});
});
这是我的HTML
<div>
<button class="toggle_button" data-contents=".item_8"></button>
<ul class="contents item_8">
<li><input class="selectBox" type="checkbox" id="color_1" name="color_1" value=""><label for="color_1">Red</label></li>
<li><input class="selectBox" type="checkbox" id="color_2" name="color_2" value=""><label for="color_2">Orange</label></li>
<li><input class="selectBox" type="checkbox" id="color_3" name="color_3" value=""><label for="color_3">Yellow</label></li>
<li><input class="selectBox" type="checkbox" id="color_4" name="color_4" value=""><label for="color_4">Green</label></li>
<li><input class="selectBox" type="checkbox" id="color_5" name="color_5" value=""><label for="color_5">Blue</label></li>
</ul>
</div>
最佳答案
正确的方法是$.inArray
-不是inArray
-您可以使用更好的选择器并使用普通的indexOf
调用来缩短代码:
$('input.selectBox').each(function(){
var isChecked = this.checked;
var txt = $(this).parent().text();
var idx = rulesArray.indexOf(txt);
if (isChecked && idx === -1) {
rulesArray.push(txt);
} else if (!isChecked && idx > -1) {
rulesArray.splice(idx, 1);
}
});
以及使用
$.map
的解决方案var rulesArray = $('input.selectBox:checked').map(function() {
return $(this).parent().text();
}).get();
关于javascript - 尝试仅将唯一值添加到我的数组,并且未定义“inArray”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38744893/