-1

JSONを介してリモートサーバーからデータを取得し、それにボタンを付けています:

$.getJSON('http://www.mysite.com/jsond1.php',

          function(data){
          jsonObject=eval(data);
          day1content = jsonObject.json1;

          //APPEND TO DIV
          $('#showday1').append(day1content);
          //CREATE BUTTON, ADD VALUE FROM
          var input = '<input type="button" class="save_event" value="Save to My Program" />';
          //ATTACH BUTTON
          $('.event').append(input);

これはうまくいきます。しかし、ボタンにイベントを添付したい、つまり:

$('.save_event').click(function() {
                            console.log("HERE");
                 });

これを上のスクリプトのすぐ下に配置すると、何も起こりません。なぜこれが起こっているのか誰にも分かりますか?JQuery Mobile で何か特別なことをする必要がありますか?

4

3 に答える 3

1

これを使って:

$(document).on('click','.save_event',function() {
    console.log("HERE");
});

偶数委任について詳しく知りたい場合は、ここで見つけることができます:リンク

また、これを使用してボタンのマークアップを強化することも忘れないでください。

$('.save_event').button();

詳細を知りたい場合は、jQuery Mobile の動的コンテンツの機能強化に関する私の別の記事をお読みください: jQuery Mobile: Markup Enhancement of dynamic added content

于 2013-05-21T06:48:04.900 に答える
1

以下を使用する必要があります。

// New way (jQuery 1.7+) - .on(events, selector, handler)
$('.event').on('click', '.save_event', function(event) {
    event.preventDefault();
    alert('testlink'); 
    console.log("HERE");
});

これにより、要素内の任意の入力にイベントがアタッチされ、要素ツリー.event全体をチェックする必要がなくなり、document効率が向上します。

詳細はこちら:

于 2013-05-21T06:48:18.943 に答える
0

ボタンが作成された後、右にバインドする必要があります。

安全のために、同じボタンで複数のイベントリスナーを避けるために、前にバインドを解除する必要があります;)

$.getJSON('http://www.mysite.com/jsond1.php',
          function(data){
              var jsonObject = eval(data),
              day1content = jsonObject.json1;

              // APPEND TO DIV
              $('#showday1').append(day1content);

              // CREATE/ATTACH BUTTON + ADD VALUE FROM
              $('.event').append('<input type="button" class="save_event" value="Save to My Program" />');

              // FOR SAFETY, UNBIND CLICK BEFORE BINDING : AVOID MULTIPLE BINDING
              $('.event .save_event').unbind('click');

              // ATTACH EVENT TO BUTTON
              $('.event .save_event').click(function() {
                        console.log("HERE");
             });
       });
于 2013-05-21T06:52:51.633 に答える