我有一个生成的jqueryui手风琴代码,如下所示:
<div id="treeview-accordion">
<h3><a href="#" accindex="0">Basic</a></h3>
<div>
<ul class="navigation-treeview treeview-sanjo" id="yw0">
<li><span style="font-weight:bold"><a href="/sanjo/site/index"> Home</a></span>
<ul>
<li><span> Profile</span>
<ul>
<li><span><a href="/sanjo/user/profile"> View Profile</a></span></li>
<li><span><a href="/sanjo/user/profile/edit"> Update Profile</a></span></li>
<li><span><a href="/sanjo/user/profile/changepassword"> Change Password</a></span></li>
</ul>
</li>
</ul>
</li>
<li><span> Personnel Management</span>
<ul>
<li><span><a href="/sanjo/user/admin"> Manage Personnel</a></span>
<ul>
<li><span><a href="/sanjo/user"> List Personnel</a></span></li>
<li><span> Add Personnel</a></span></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<h3><a href="#" accindex="0">Basic2</a></h3>
<div>
<ul class="navigation-treeview treeview-sanjo" id="yw01">
<li><span style="font-weight:bold"><a href="/sanjo/site/index2"> Home2</a></span>
<ul>
<li><span> Profile</span>
<ul>
<li><span><a href="/sanjo/user/profile2"> View Profile2</a></span></li>
<li><span><a href="/sanjo/user/profile/edit2"> Update Profile2</a></span></li>
<li><span><a href="/sanjo/user/profile/changepassword2"> Change Password2</a></span></li>
</ul>
</li>
</ul>
</li>
<li><span> Personnel Management2</span>
<ul>
<li><span><a href="/sanjo/user/admin2"> Manage Personnel2</a></span>
<ul>
<li><span><a href="/sanjo/user2"> List Personnel2</a></span></li>
<li><span> Add Personnel2</a></span></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
我想要达到的目的是根据点击的链接获取相应“h3”标签的属性“accindex”。
例如,我点击了“查看个人资料”,由于它位于“h3”(基本)下,我想获得其accindex属性的值,即“0”。
我尝试使用nearest(),但它返回“undefined”。我也不能使用父母()。
我怎么能完成这样的任务?请帮助我。
感谢。
答案 0 :(得分:2)
首先,“查看个人资料”链接不在h3里面,它在h3的兄弟中。试试这个
当您点击查看个人资料链接时,请尝试此
accindex = $(this).closest("div").prev("h3").find("a").attr("accindex");
注意:在上面的代码中,this
表示单击的锚点。
答案 1 :(得分:2)
这是一个工作小提琴:http://jsfiddle.net/mrchief/M6PcW/
$('a.link').click(function() {
alert($(this).closest('div').prev('h3').children('a').attr('accindex'));
return false;
});
我修改了你的标记,以便为所需的href添加一个类(以便于选择)
例如。 <a class="link" href="/sanjo/user/profile/edit"> Update Profile</a>
答案 2 :(得分:0)
“查看个人资料”链接不是<h3>
的子级,因此parents()
和closest()
无效。您需要从指向<ul>
的链接遍历DOM,然后遍历<div>
,然后您就可以获得<h3>
。
假设this
是链接:
$(this).closest('ul.navigation-treeview').closest('div').prev('h3');
应该获得您想要的<h3>
。
从那里获取随附的<a>
及其accindex。
var acc = $(this).closest('ul.navigation-treeview').closest('div').prev('h3').find('a');
acc.attr('accindex');
DEMO:http://jsfiddle.net/yWsDx/
编辑:$(this).closest('div').prev('h3').find('a')
应该没问题,.closest('ul.navigation-treeview')
不是必需的。
答案 3 :(得分:0)
看起来你需要使用'find'或'children'。
所以要在锚标记中获取属性(使用H3的上下文时):
$("h3 a").attr("accindex");
或
$("h3").find("a").attr("accindex");
或
$("h3").children("a").attr("accindex");
我猜你的点击事件使用锚标记作为其选择,所以你可能只需要这样做:
$(this).attr("accindex");
点击此处的“基本”。 http://jsfiddle.net/hns2H/1/