0

次のようにナビゲーションバーをロードしようとしています:

$.get("nav.html",function(menuData){
  $("body").html(menuData);
)};

「nav.html」内には次のようなものがあります

<td id='menu-item-1'>menu item 1</td>
<td id='menu-item-2'>menu item 2</td>

などだから、各アイテムにイベントを割り当てたいので、これを試しました:

$("#menu-item-1").mousedown(function(response){
  //create an empty table
  $("body").append("table id='menu-item-1-sub-table'></table>");
  //retrieve php data and insert it in the table
  $.get("data.php",function(response){
    $("#menu-item-1-sub-table").html(response);
  });
});

問題は、イベントが発生しないことです。javascriptにhtmlを直接持っていたときにうまくいきました。

$("body").append("<table><tr><td id='menu-item-1'>menu-item-1</td></tr></table>");

しかし、それを別のファイルに移動すると、機能しなくなります。

編集

これはうまくいった1つの答えでした:

使用する

$("body").on('click','#menu-item-1',function(){
etc.
});

試したときはまだ menu-item-1 が作成されていなかったので

$("#menu-item-1).mousedown
4

4 に答える 4

4

あなたに代わりの答えを与えるために

$("#menu-item-1").on("click",function(){
  //stuff
});

$('body').on('click','#menu-item-1', function(){
  //stuff
}); 

.on()委任されたとき#menu-item-1はまだページにないので機能しますが、呼び出されたときは選択できます#menu-item-1

于 2013-01-19T20:53:45.477 に答える
0

テーブルを追加してから、追加されたテーブルのhtmlを設定するよりも、応答を受け取ったときにテーブルを追加する方がよいでしょう。

$('body').on('click','#menu-item-1', function() {
  $.get("data.php",function(response){
    $("body").append('<table id="menu-item-1-sub-table">'+response+'</table>');
  });
});

あなたがすでに行ったことに基づいて

$('body').on('click','#menu-item-1', function() {
  $("body").append("<table id='menu-item-1-sub-table'></table>");
  $.get("data.php",function(response){
    $("#menu-item-1-sub-table").html(response);
  });
});
于 2013-01-19T20:20:28.163 に答える
0

問題は、body.html(menuData) の後に get コールバック内にハンドラーを設定する必要があるためだと思います。しかし、それがすべて機能する場合、メニューテンプレートをページにロードするのは奇妙な方法だと思います.

于 2013-01-19T20:22:39.810 に答える
0

あなたは別のファイルを言った - そのコードにjqueryを追加しましたか?または、mousedown コードをロードするときに要素が存在しない可能性があります - jquery on-function を試してください。

 $('#menuitem').on(function(){

    $("#menu-item-1").mousedown(function(response){
      $("body").append("table id='menu-item-1-sub-table'></table>");
       $.get("data.php",function(response){
       $("#menu-item-1-sub-table").html(response);
       })
     });
   })
于 2013-01-19T20:28:44.650 に答える