2011-05-23 61 views
0

來自俄羅斯的我很抱歉,因爲糟糕的英語。 我正在用ajax加載網頁的一部分。jQuery - 來自ajax的按鈕

例如

<script type="text/javascript"> 
$("#link1").click(function(){ 
    $.post("ajax.php", { act: "load" }, 
    function(data) { 
     $("#content").html(data); 
    }); 
}); 
</script> 

<a href="#" id="link1">Click</a> 
<div id="content"></div> 

Ajax.php返回:<input type="button" id="button1" value="test">

現在我想控制從腳本這個按鈕了。 我很努力:

<script type="text/javascript"> 
    $("#link1").click(function(){ 
     $.post("ajax.php", { act: "load" }, 
     function(data) { 
      $("#content").html(data); 
     }); 
    }); 

    $("#button1").click(function(){ 
     alert('test'); 
    }); 
</script> 

但這並不奏效。你可以幫我嗎?謝謝。

回答

2
$("#button1").click(...); 

不會做任何事情。

無論是把它放在你的Ajax請求的回調:

$.post("ajax.php", { act: "load" }, function(data) { 
    $("#content").html(data); 
    $("#button1").click(function(){ 
     alert('test'); 
    }); 
}); 

或使用.delegate()/.live()

$("#content").delegate('#button1', 'click', function(){ 
    alert('test'); 
}); 
+0

謝謝,它的工作! – Anton 2011-05-23 13:39:25

1

改變它的使用方法:

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

live功能允許將事件從動態添加到頁面的元素被解僱。因爲元素#button1當您運行的代碼($("#button1")不會選擇任何元素)不存在尚未

0

您正在註冊的單擊事件是目前上的任何按鍵頁。當您的鏈接被點擊時,其鏈接已被註冊。

如由Richard D.這組事件爲永遠你正在使用作爲您選擇的ID匹配任何按鈕提到使用的現場直播。

1

這一部分:

$("#button1").click(function(){ 
    alert('test'); 
}); 

是否附着單擊處理與標識button1任何現有的DOM元素時,腳本是第一次運行。由於該按鈕在您手動點擊您的link1元素之前不存在,您需要更改添加事件處理程序的方式。嘗試使用jQuery的從該live方法來做到這一點:

<script type="text/javascript"> 
    $("#link1").click(function(){ 
     $.post("ajax.php", { act: "load" }, 
     function(data) { 
      $("#content").html(data); 
     }); 
    }); 

    $("#button1").live('click', function(){ 
     alert('test'); 
    }); 
</script> 

這將盡快爲他們在文件中變成「活」的事件處理程序連接到任何匹配的元素。更多這裏:http://api.jquery.com/live/