2009-08-11 36 views
0

請看看這段代碼 -如何從動態html結果執行javascript函數? jquery

當我點擊myLink時,我得到一個模態對話窗口,顯示如下定義的html。這個html包含一個按鈕(id = test_button),當我點擊這個按鈕時,我想要做一個ajax請求。 但它不工作。所以要測試它,我只是在做一個警報,但它不會工作。

也可以從test_button點擊函數中更新現有的dom元素值(只填充表單)。

感謝您的幫助。

$('#myLink').click(function(event) { 
    event.preventDefault(); 
    $('<div id="iContainer">Test: <input type="text" value="" id="test_text" /> 
     <input type="button" id="test_button" value="click" /></div>').appendTo('body');   
    $("#iContainer").dialog({     
     width: 600, 
     modal: true, 
     close: function(event, ui) { 
      $("#iContainer").remove(); 
      } 
     }); 
    }); 
    $('#test_button').click(function() { 
     alert('I am in Alert'); 
     //alert($('#test_text').val()); 
    }); 

回答

2

嘗試用Events/live

$('#test_button').live("click", function(){ 
    alert('test'); 
}); 
+0

輝煌..作品..讓我再試一次。謝謝 – TigerTiger 2009-08-11 15:07:34

1

的問題是,你正在試圖元素存在之前附上點擊處理程序。

正如CMS規定,您可以使用.live(),或者你可以在你的$( '#myLink的')添加單擊處理程序點擊()函數

像這樣:

$('#myLink').click(function(event) { 
     event.preventDefault(); 
     $('<div id="iContainer">Test: <input type="text" value="" id="test_text" /> 
       <input type="button" id="test_button" value="click" /></div>').appendTo('body');     
     $("#iContainer").dialog({          
       width: 600, 
       modal: true, 
       close: function(event, ui) { 
         $("#iContainer").remove(); 
         } 
       }); 

     $('#test_button').click(function() { 
       alert('I am in Alert'); 
       //alert($('#test_text').val()); 
     }); 
}); 
+0

如何將它添加到$('#myLink')。click()??謝謝。 – TigerTiger 2009-08-11 15:06:58

+0

請參閱答案中的代碼,我只是拖動結束大括號,並放下$('#test_button')。click(..)代碼。請注意,我會考慮將這些內容分離爲更加模塊化的內容,但這種或CMS的解決方案將幫助您啓動並運行。 – Marc 2009-08-11 15:09:06

+0

是的,檢查它。 – TigerTiger 2009-08-11 15:10:34