首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从parents属性设置属性

从parents属性设置属性
EN

Stack Overflow用户
提问于 2011-08-18 19:05:35
回答 4查看 417关注 0票数 1

我有这个超文本标记语言,我正在尝试将href从photo.php转换为#photo,等等

代码语言:javascript
复制
<ul id="menu">
    <li id="home" class="tab_selected"><a href="home.php">Home</a></li>
    <li id="portfolio"><a href="portfolio.php">Portfolio</a></li>
    <li id="music"><a href="music.php">Music</a></li>
    <li id="video"><a href="video.php">Video</a></li>
    <li id="photo"><a href="photo.php">Photo</a></li>
</ul>

我一直在尝试这样的东西:

代码语言:javascript
复制
$('#menu li a').attr('href', "#"+$(this).parent().attr('id'));

但是href总是没有定义。

我将散列存储在li#id中,但如果我不能这样做,那就更好了。

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-18 19:11:39

$(this)不会引用您认为它所引用的对象。

使用.attr,您可以使用一个函数作为第二个参数,为每个匹配的元素计算新的属性值,如下所示:

代码语言:javascript
复制
// i == index, val == value of href at index i
$('#menu li a').attr('href', function(i, val) {
    return '#' + $(this).parent().attr('id');
});

在上面的例子中,this引用了正确的上下文(当前迭代的锚元素)。

票数 4
EN

Stack Overflow用户

发布于 2011-08-18 19:10:51

所有jQuery

代码语言:javascript
复制
$('#menu li a').each(function () {
    var a = $(this);
    a.attr('href', "#" + a.parent().attr('id');
});

第jQuery部分

代码语言:javascript
复制
$('#menu li a').each(function () {
    this.href = "#" + $(this).parent()[0].id;
});

更少的部件jQuery

代码语言:javascript
复制
$('#menu li a').each(function () {
    this.href = "#" + this.parentNode.id;
});

选择您的选项:)

票数 1
EN

Stack Overflow用户

发布于 2011-08-18 19:13:21

问题是this没有包含错误的值(它引用了可能存在的任何包装上下文),因为您没有处于正确的上下文中。查看(当前)其他3个答案中的任何一个,以了解如何解决此问题(hint, you want to use each)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7106394

复制
相关文章

相似问题

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