如何从JQuery UI菜单选择事件中获取属性信息

时间:2013-01-16 10:32:12

标签: jquery

我正在尝试从JQuery UI菜单选择事件中获取自定义属性。当我尝试下面的脚本时,我得到了未定义。

$( "#menu" ).menu({  
select: function( event, ui ) { alert(ui.item.attr("tag")); }
});      

HTML

<ul id="menu" style="position:absolute;">
<li><a href="#" tag="something">Aberdeen</a></li>
<li><a href="#" tag="some">Ada</a></li>
<li><a href="#" tag="something1">Adamsville</a></li>
<li><a href="#" tag="something2">Addyston</a></li></ul>

谢谢。

更新:添加完整代码以防我链接错误,我是jQuery的新手。我尝试使用$(document).ready按照推荐包装,但仍然未定义

<!doctype html>
<html>
<head>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<script>
  $(document).ready(function(){

        $( "#menu" ).menu({  
            select: function( event, ui ) { alert(ui.item.attr("tag")); }
        });      
  });   

</script>
</head>
<body>    
<ul id="menu" style="position:absolute;">
<li><a href="#" tag="something">Aberdeen</a></li>
<li><a href="#" tag="some">Ada</a></li>
<li><a href="#" tag="something1">Adamsville</a></li>
<li><a href="#" tag="something2">Addyston</a></li></ul>
</body>
</html>

4 个答案:

答案 0 :(得分:8)

“ui.item”jquery对象中返回的元素是li元素(在您的示例中)。你需要做的是获取它的子元素(a标签)来访问属性并提取标签的值:

var menu = $('#menu');
$(document).ready(function(){
    menu.menu({
        select: function(event, ui) {
            alert(ui.item.children().attr('tag'));
        }
    });
});

http://jsfiddle.net/4bY7d/88/

答案 1 :(得分:1)

尝试换入document.ready

$(document).ready(function(){

      $( "#menu" ).menu({  
          select: function( event, ui ) { alert(ui.item.attr("tag")); }
      });      
});  

答案 2 :(得分:0)

这是因为未加载文档。 将脚本写在document.ready函数

$(document).ready(function(){

     //jquery code   
});  

答案 3 :(得分:0)

$( "#menu" ).menu({select: function( event, ui ) {
    tag = ui.item.context.children[0].attributes.tag.value;
    alert (tag)
}});