我有这个列表,我希望在点击链接时从jquery中选择li元素
<ul>
<li><a class="accordion" href="#">1</a></li>
<li><a class="accordion" href="#">2</a></li>
<li><a class="accordion" href="#">3</a></li>
<li><a class="accordion" href="#">4</a></li>
<li><a class="accordion" href="#">5</a></li>
<li><a class="accordion" href="#">6</a></li>
</ul>
我写这个jquery代码
$('a.accordion').click(function() {
var href = $(this).attr("href");
div = $('<div/>', {
id: 'intotheli',
style: {width:200}
});
//console.log(div);
// loading content with ajax custom function
div.html( loadcontent(div,$(this).attr("href")));
// on this point i want find the li tag that contain the clicked link
div.slideDown('slow').appendTo($(this));
return false;
});
我已尝试过$(this)的.next()和prev(),但我没有解决我的问题(也许我用错了)
提前致谢。
答案 0 :(得分:2)
看起来你对此不熟悉,我就是这样写的:
<ul class="accordion">
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="#">6</a></li>
</ul>
这使得标记更小更整洁。
然后代替:
$('a.accordion').click(function() {
我会用:
$('.accordion').on("click", "a", function() {
这意味着只有一个事件处理程序被绑定,而不是6个,加速了一点,但再次只是保持简单。此更改仅适用于我的新标记。
其余代码将按原样运行,$(this)
仍然引用所点击的链接。
要获取li
所在的a
元素,请使用$(this).parent('li')
。
答案 1 :(得分:1)
.next()
和.prev()
遍历兄弟姐妹。他们得到了下一个/上一个兄弟姐妹。如果您想从<li>
获取<a>
,则需要.parent
。
$('a.accordion').click(function() {
var $li = $(this).parent('li');
});