2013-05-21 30 views
-1

我從通過JSON遠程服務器中檢索數據並附加一個按鈕,將其:jQuery Mobile的:創建與jQuery按鈕,試圖附加點擊功能,它

$.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的特別之處嗎?

+0

您是否獲得包含JSON JSON,因爲您正在使用'上的數據eval'? 'getJSON'方法已經爲你解析了JSON。 – Guffa

+0

你在哪兒放置'click'功能?你有沒有嘗試過在控制檯上執行它? –

回答

1

使用此:

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

如果您想了解更多,甚至代表團,你可以在這裏找到:link

也不要忘記,以提高你的按鈕標記與此:

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

如果您想了解更多的閱讀我關於jQuery Mobile的動態內容增強其他文章:jQuery Mobile: Markup Enhancement of dynamically added content

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元素樹的範圍並提高效率。

此處瞭解詳情:

+0

嗯,那個奇怪的警報工程,但不是console.log – MeltingDog

+0

真的很奇怪!嘗試評論'event.preventDefault()' –

+0

不 - 警報仍然可以,但仍然沒有console.log – MeltingDog

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"); 
      }); 
     });