-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:动态添加内容的标记增强

于 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 回答