Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法使用jQuery更改属性值_Javascript_Jquery - Fatal编程技术网

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');
});