首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在为href获取attr时获取#[ Object ]

在为href获取attr时获取#[ Object ]
EN

Stack Overflow用户
提问于 2016-10-13 18:11:11
回答 3查看 588关注 0票数 1

我有一个动态生成的ol li列表,每个li都有一个带有for属性的label

如下所示:

代码语言:javascript
运行
复制
<ol id="altErrorCont" class="error-container">
    <li>
        <label class="error" for="dobMonth">Enter the month you were born</label>
    </li>
    <li>
        <label class="error" for="dobDay">Enter the day you were born</label>

在页面加载时,我想用一个a标记包装标签,该标签在包装的标签中包含for标记的锚。这就是我想要发生的:

代码语言:javascript
运行
复制
<ol id="altErrorCont" class="error-container">
    <li>
        <a href="#dobMonth">
            <label class="error" for="dobMonth">Enter the month you were born</label>
        </a>
    </li>
    <li>
        <a href="#dobDay">
            <label class="error" for="dobDay">Enter the day you were born</label>
        </a>

这是我写的,但不管用

代码语言:javascript
运行
复制
var labelFor = $("ol#altErrorCont li label").each(function(){
    $(this).attr("for");
});

$('ol#altErrorCont li > label').wrap('<a href="#'+ labelFor +'">');

它将返回每个包装标签的<a href="#[object Object]">。有人能为我指出正确的方向或解释为什么会发生这种事吗?

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-13 18:14:12

jQuery的.each()方法返回jQuery对象。当您在string contcatenation中使用它时,JavaScript会对其调用toString()方法。由于jQuery没有自己定义的toString方法,所以它调用在返回[object Object]Object.prototype上定义的方法。

下面是我要做的事情:

代码语言:javascript
运行
复制
var labelFor = $("ol#altErrorCont li label").each(function(){
    $(this).wrap('<a href="#'+ $(this).attr("for") +'">');
});
票数 4
EN

Stack Overflow用户

发布于 2016-10-13 18:17:27

each只是提供了一种遍历一组项的方法。您从labelFor获得的值将与您所得到的相同

代码语言:javascript
运行
复制
var labelFor = $("ol#altErrorCont li label");

如果要将每个label包装在一个链接中,可以在each循环期间执行一些操作。

代码语言:javascript
运行
复制
$("ol#altErrorCont li label").each(function() {
  var $this = $(this); // Faster than always doing $(this)
  var label = $this.attr('for');
  $this.wrap('<a href="' + label + '">');
});
票数 0
EN

Stack Overflow用户

发布于 2016-10-13 18:17:39

这是因为“每个”方法返回一个jQuery对象,您可以在“每个”方法中移动如下:$('ol#altErrorCont li > label').wrap('<a href="#'+ labelFor +'">');

代码语言:javascript
运行
复制
$(this).wrap('<a href="#'+ $(this).attr("for") +'">');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40028095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档