我已经搜索过并找到了以下内容来获取标签。
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属性重置为新值。
答案 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;
答案 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”的属性的内容,我会感到惊讶,所以这很可能不会做你想要的。