我正在尝试使用associative array
创建JQuery
。我希望它填充用户从UI
中选择的复选框的值。
我最初是这样创建数组的:
$contentArray = [];
$('.content-filter :checked').each(function(){
$contentArray.push(this.value);
})
但问题在于,当我通过php
将其传递给Ajax
脚本时,很难从中获取值。我宁愿能够根据与之关联的密钥从数组中获取值。
所以我决定将我的代码修改为:
$contentArray = new Array(); //Hold checked "content" filters
//Content Filter - cycle through each filter and add value of checked ones to array
$('.content-filter :checked').each(function(){
$contentArray[this.value] = this.value;
})
然而现在当我执行console.log
时,我被告知我的数组内容中什么都没有。
任何人都可以告诉我如何解决这个问题并告诉我哪里出错了?
答案 0 :(得分:0)
你的过滤器是错误的 - 你需要删除:checked
之前的空格,否则它会在里找到一个元素选中的复选框,这显然不存在:
$contentArray = new Array(); //Hold checked "content" filters
//Content Filter - cycle through each filter and add value of checked ones to array
$('.content-filter:checked').each(function(){
$contentArray[this.value] = this.value;
})
console.log($contentArray);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" class="content-filter" value="1" />
<input type="checkbox" class="content-filter" value="2" checked="checked" />
<input type="checkbox" class="content-filter" value="3" checked="checked" />
<input type="checkbox" class="content-filter" value="4" />
<input type="checkbox" class="content-filter" value="5" />
&#13;
但是,如上所述,这只会创建一个碎片数组。如果你想要真正的关联键,你应该创建一个对象(因为我不认为这更容易在php中处理):
$contentObject = {}; //Hold checked "content" filters
//Content Filter - cycle through each filter and add value of checked ones to array
$('.content-filter:checked').each(function(){
$contentObject[this.value] = this.value;
})
console.log($contentObject);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" class="content-filter" value="1" />
<input type="checkbox" class="content-filter" value="2" checked="checked" />
<input type="checkbox" class="content-filter" value="3" checked="checked" />
<input type="checkbox" class="content-filter" value="4" />
<input type="checkbox" class="content-filter" value="5" />
&#13;