jQuery最接近返回undefined

时间:2011-08-10 15:42:14

标签: jquery jquery-ui jquery-ui-accordion

我有一个生成的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”。我也不能使用父母()。

我怎么能完成这样的任务?请帮助我。

感谢。

4 个答案:

答案 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/