我有这个 HTML,我正在尝试将每个内容的 href 从 photo.php 转换为 #photo 等
<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>
我一直在尝试这样的事情:
$('#menu li a').attr('href', "#"+$(this).parent().attr('id'));
但是 href 总是显示为未定义。
我将哈希存储在 li#id 中,但如果我不能这样做,那就更好了。
谢谢。
最佳答案
$(this)
没有引用您认为它引用的对象。
通过.attr
,您可以使用函数作为第二个参数来计算每个匹配元素的新属性值,如下所示:
// i == index, val == value of href at index i
$('#menu li a').attr('href', function(i, val) {
return '#' + $(this).parent().attr('id');
});
在上面的示例中,this
引用了正确的上下文(当前迭代的 anchor 元素)。
关于jquery - 从 parent 属性设置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7106394/