我有以下html:
<div class="alm-filter alm-filter--meta" id="alm-filter-1" data-key="meta" data-fieldtype="checkbox" data-meta-key="Cate" data-meta-compare="IN" data-meta-type="CHAR">
<ul>
<li class="alm-filter--checkbox"><a href="javascript:void(0);" class="alm-filter--link field-checkbox field-other" id="checkbox-other-1" data-type="checkbox" data-value="other">Other</a></li>
<li class="alm-filter--checkbox"><a href="javascript:void(0);" class="alm-filter--link field-checkbox field-painting active" id="checkbox-painting-1" data-type="checkbox" data-value="painting">Painting</a></li>
</ul>
</div>
<div class="alm-filter alm-filter--meta" id="alm-filter-2" data-key="meta" data-fieldtype="checkbox" data-meta-key="usp-custom-14" data-meta-compare="BETWEEN" data-meta-type="NUMERIC">
<ul>
<li class="alm-filter--checkbox"><a href="javascript:void(0);" class="alm-filter--link field-checkbox field-1900 active" id="checkbox-1900-2" data-type="checkbox" data-value="1900">1900</a></li>
<li class="alm-filter--checkbox"><a href="javascript:void(0);" class="alm-filter--link field-checkbox field-1920" id="checkbox-1920-2" data-type="checkbox" data-value="1920">1920</a></li>
</ul>
</div>
我需要更改值,例如。 field-1900
id="checkbox-1900-2"
data-value="1900"
包含我从另一页的form
收到的值。在结果页面上我做了:
<?php $myId = $_POST['myDates']; ?>
然后 js :
var str = "<?php echo $myId; ?>";
var temp = new Array();
// this will return an array with strings "1", "2", etc.
temp = str.split(",");
for (a in temp ) {
temp[a] = parseInt(temp[a], 10); // Explicitly include base
$("#alm-filter-2").find("a").attr("value", temp[a]);
}
上面的JS是一个尝试过的逻辑,基本上我知道我有2个元素包含我想要改变的不同值,我知道我会得到var
有2个数字:var str = "1952,1991";
如何更改这两个a
的值以反映我从表单中获取的值?
更新
这越来越近了:
var str = "<?php echo $myId; ?>";
var temp = new Array();
// this will return an array with strings "1", "2", etc.
temp = str.split(",");
temp = temp.map(Number);
$("#alm-filter-2").find("ul>:first-child a").attr("value", temp[0]);
但我需要更改所有三种情况的values
以及反映我从表单中获得的两个值的所有els a
。
答案 0 :(得分:1)
可能首先将数据分解为数组
var values = "<?php echo json_encode(explode(',',$myId)); ?>";
然后使用each
循环遍历元素并使用它们的索引从数组中的相同索引获取每个值
$("#alm-filter-2 a[data-value]").each(function(i){
$(this).attr('data-value', values[i]))
})
答案 1 :(得分:0)
这就是我通过@charlietfl
解决的问题在后端我将1900设置为默认值,我将更改然后执行:
var str = "<?php echo $myId; ?>";
var values = new Array();
values = str.split(",");
values = values.map(Number);
$("#alm-filter-2 a[data-value]").each(function(i){
$(this).attr('data-value', values[i]);
$(this).attr('id', function(_, currentID) {
return currentID.replace('1900', values[i]);
});
$(this).attr('class', function(_, currentClass) {
return currentClass.replace('1900', values[i]);
});
$(this).html(values[i]);
});