jquery - 找到'标签'元素由'为'属性和重置'为'属性为新值

时间:2015-05-21 13:46:19

标签: javascript jquery

我已经搜索过并找到了以下内容来获取标签。

var label = $("label").attr("for", id);

我最初的尝试是尝试变种:

$('label[for|="'+oldId+'"]').attr('for',newId);

其中oldId是当前值,newId是新值。 我没有收到错误,但没有任何改变。

我还尝试只获取标签的id,这样我就可以通过id找到元素并更改属性值,但是当我尝试时:

var label = $("label").attr("for", oldId);
var id = label.id;

我认为id未定义。

所以,基本上我想: - 找到属性的标签元素。 - 将for属性重置为新值。

3 个答案:

答案 0 :(得分:6)

要求似乎有点奇怪,但是:

  

所以,基本上我想:

     
      
  • 找到属性
  • 的标签元素   
var theLabel = $('label[for="' + theValueYouWantToFind + '"]');
  
      
  • 将for属性重置为新值
  •   
theLabel.attr("for", theNewValueYouWantItToHave);

这会将标签与其最初关联的元素(id匹配theNewValueYouWantItToHave的元素)相关联。

直播示例这开头是"点击我"连接到它左侧的复选框。如果你点击"切换"它将它连接到右侧的复选框:



var currentId = $("label").first().attr("for");
$("input[value=Switch]").on("click", function() {
  var newId = currentId === "left" ? "right" : "left";
  var label = $('label[for="' + currentId + '"]');
  label.attr("for", newId);
  currentId = newId;
});

<div>
  <input type="checkbox" id="left">
  <label for="left">Click me</label>
  <input type="checkbox" id="right">
</div>
<input type="button" value="Switch">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以尝试如下:

<强> DEMO HERE

var oldId="#myId";
$('label[for="'+oldId+'"]').attr('for',"#newId");

现在解释:

var label = $("label").attr("for", id);

在这里,您尝试将id值分配给变量,同时尝试更改

$('label[for|="'+oldId+'"]').attr('for',newId);

for添加|而不是]

之后,您遇到语法错误
var label = $("label").attr("for", oldId);
var id = label.id;

同样的问题 - 分配和更改没有做任何事情,标签也没有任何价值,从而导致undefined错误

答案 2 :(得分:0)

Documentation for JQuery's attr

在你走得更远之前,你为什么要更改“for”属性并在更改之后再次处理?

带有一个参数的

attr返回属性的值,即:attr("for")。带有两个参数的attr设置属性id的值:attr("for", newValue)

$("label").attr("for", id);

将属性“for”设置为id。

的值
$('label[for|="'+oldId+'"]').attr('for',newId);

Jquery selector test site确认您的选择器很好。从我所看到的情况来看,只要oldId是您要查找的值,该属性应该更改为newId。

var label = $("label").attr("for", oldId);
var id = label.id;

这将找到所有“label”并将其“for”属性设置为oldId。 设置attr返回jquery,但没有研究它,如果它返回标签而不是它设置为“oldId”的属性的内容,我会感到惊讶,所以这很可能不会做你想要的。