用当前名称替换name attr并用jQuery替换另一个字符串?

时间:2018-07-11 11:11:07

标签: javascript jquery

我有此代码:

var prodElem = $('#dropTitle').text();

$(prodElem).clone(true, true).appendTo('#orders')
 .attr("name", $(this).attr("name") + "-1");

,但name属性已由 -1 代替。

如何使用“ this”获得当前名称并将-1附加到末尾?

谢谢!

1 个答案:

答案 0 :(得分:4)

该代码中的

this并不引用您要为其设置名称的元素。我的猜测是,这段代码正在运行,其中this指向window,因此$(this).attr("name")返回窗口名称(通常为空白),因此您将name设置为"" + "-1"的所有这些元素,当然是"-1"

您可以使用the version of attr that accepts a callback

$(prodElem).clone(true, true).appendTo('#orders')
  .attr("name", function() {
    return $(this).attr("name") + "-1";
  });

this是指每个匹配的元素。

旁注:如果这确实是name属性,则由属性name反映出来,因此您也可以使用prop进行操作,并直接在函数中获取反映的属性:

$(prodElem).clone(true, true).appendTo('#orders')
  .prop("name", function() {
    return this.name + "-1";
  });