9

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

4 に答える 4

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/

于 2013-06-27T16:24:27.070 に答える
1

中に詰め込んでみるdocument.ready

$(document).ready(function(){

      $( "#menu" ).menu({  
          select: function( event, ui ) { alert(ui.item.attr("tag")); }
      });      
});  
于 2013-01-16T10:37:14.933 に答える
0
$( "#menu" ).menu({select: function( event, ui ) {
    tag = ui.item.context.children[0].attributes.tag.value;
    alert (tag)
}});
于 2014-01-08T06:03:19.800 に答える
0

これは、ドキュメントが読み込まれていないためです。document.ready関数内にスクリプトを書く

$(document).ready(function(){

     //jquery code   
});  
于 2013-01-16T10:50:20.523 に答える