Javascript 无法使用jQuery更改属性值
我有以下内容:Javascript 无法使用jQuery更改属性值,javascript,jquery,Javascript,Jquery,我有以下内容: <span class="field-validation-valid" data-valmsg-replace="true" data-valmsg-for="VariableDataList[0].VariableDataForLevel[1].Value"></span> 重命名值为[1]。值。我想用[2].Value替换数据valmsg for中的文本。之后,我将在data valmsg for中输入值data valmsg for=“Varia
<span class="field-validation-valid" data-valmsg-replace="true" data-valmsg-for="VariableDataList[0].VariableDataForLevel[1].Value"></span>
重命名
值为[1]。值
。我想用[2].Value替换数据valmsg for
中的文本。之后,我将在data valmsg for
中输入值data valmsg for=“VariableDataList[0]。VariableDataForLevel[2]。value
我已经用VisualStudio对它进行了调试,它在find中停止,但是属性的值没有改变
我知道属性值不会更改,因为我已打开Internet Explorer调试器,但没有看到新值
我也尝试过同样的方法,为输入字段和替换函数更改id
和name
如何替换该属性的值?首先,您应该使用each()
迭代元素集合。map()
旨在从该集合创建数组,但在这种情况下,如果正确使用attr()
,也不需要
代码的问题在于,您没有调用attr()
的setter。而是获取值,执行替换,但不对结果执行任何操作
要解决此问题,可以为attr()
方法提供一个函数,该函数对集合中元素的每个实例执行逻辑。请尝试以下操作:
var latestIdNumber='1';
var newIdNumber='999';
var reName='['+latestIdNumber+'].Value';
$(“span[data valmsg for$='Value']”)attr('data-valmsg-for',函数(i,v){
返回v.replace(重命名“[”+newIdNumber+'].Value”);
});
//为了证明它有效:
$($的span[data valmsg for$='Value'])。每个(函数(){
log($(this.attr('data-valmsg-for'));
});
福
Bar
这些是由ValidationMessageFor
自动生成的,您试图实现什么?在侧注上使用。each()
不是。map()
。replace()
不修改调用它的字符串,它返回一个新字符串。您没有使用该新字符串。重命名
值是[1].Value
。我想将data valmsg for
中的文本替换为[2]。Value
。然后,我将在data valmsg for
中使用data valmsg for=“VariableDataList[0]。VariableDataForLevel[2]。Value
。您可以删除.each()
循环,只需调用.attr()
直接执行。@nnnnnn谢谢。@Rorymcrossan关于在方法中添加函数,就像您在.attr('',function(){})
中添加的函数一样,它是否适用于jquery中的所有函数?@guradio遗憾的是不适用。我真希望是这样,因为它很方便。该模式适用于attr()
、prop()
、css()
等,但不适用于data()
。如果您想要检查,文档将为您提供所有方法的详细信息。您可以查找接受函数的方法签名。对于attr()
clone.find("span[data-valmsg-for$='Value']").map(function () {
var reName = '[' + latestIdNumber + '].Value';
$(this).attr('data-valmsg-for').replace(reName, '[' + newIdNumber + '].Value');
});