jquery attr('name')返回undefined

时间:2013-04-04 14:17:04

标签: jquery-ui menuitem

我正在尝试在我的jquery菜单ui中获取所选ui.item的name属性。我需要添加了'selected'类的项的name属性,但attr('name')返回undefined。单击提交按钮时,我需要获取该name属性。

<script>
    $(function () {
        var selection = ' ';

        $(".menu").menu({
            select: function (event, ui) {
                $('.selected', this).removeClass('selected');
                selection = ui.item.addClass('selected').attr('name');
            } // closes select function
        }); // closes menu

        $("button").button();
        $("button").click(function () {
            alert(selection)
        }); //closes click()
    });
</script>

<ul class="menu" id="menu">
    <li>
        <a href="#" name="academic_artStudies">
            <img src="" alt="" />
            <h2>Academic: Art Studies</h2>
        </a>
    </li>
    <li>
        <a href="#" name="academic_Literature">
            <img src="" alt="" />
            <h2>Academic: Literature</h2>
        </a>
    </li>
    <li>
        <a href="#" name="academic_socialSciences">
            <img src="" alt="" />
            <h2>Academic: Social Sciences</h2>
        </a>
    </li>
    <li>
        <a href="#" name="academic_physicalNaturalSci">
            <img src="" alt="" />
            <h2>Academic: Physical/Natural Sciences</h2>
        </a>
    </li>
</ul>

2 个答案:

答案 0 :(得分:1)

ui.item会返回您点击的<li>。它没有name属性。它的孩子所做的<a>标记。在获得名称之前,您需要首先获取<a>代码

selection = ui.item.addClass('selected').children('a').attr('name');

DEMO:http://jsfiddle.net/ntUcW/1/

答案 1 :(得分:0)

根据docs,ui.item是活动元素(单击),而不是您可能假设的li元素。从ui.item开始,您需要ui.item.children('a').attr('name')来获得您所追求的价值。