繁体   English   中英

jQuery-通过“ for”属性查找“ label”元素并将“ for”属性重置为新值

[英]jquery - find 'label' element by 'for' attribute and reset 'for' attribute to new value

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

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属性重置为新值。

该要求似乎有些奇怪,但是:

所以,基本上我想:

  • 通过属性找到标签元素
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> 

您可以尝试如下操作:

此处演示

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错误

JQuery的attr文档

在继续进行之前,为什么要更改“ for”属性,更改后是否要再次处理它?

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

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

将属性“ for”设置为id的值。

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

jQuery选择器测试站点确认您的选择器是好的。 从我看到的结果来看,只要oldId是您要查找的值,这是正确的,该属性应更改为newId。

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

这将找到所有“标签”并将其“ for”属性设置为oldId。 设置attr返回的是jquery,但是如果不进行研究,如果它返回的是标签而不是它设置为“ oldId”的属性的内容,我会感到惊讶,因此,这很可能无法满足您的要求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM