2012-03-19 127 views
1

我正在設計網頁使用jQuery和PHP。我的頁面有側面菜單,然後點擊其中一個選項,它向服務器發送請求以從文件中讀取一些信息,並且它會創建一個表格,通過提交和其他按鈕編輯(以防有人想要更改信息該表單)並將此html發送回客戶端。我能夠成功地做到這一點。但是當我點擊編輯按鈕時,它實際上不會調用我爲所有按鈕註冊的點擊處理程序。點擊事件按鈕類型輸入不起作用

$('button').click(function(){ 
    alert("click event"); 
}); 

我在

jQuery(document).ready(function() { 

但因爲包括這一切了jQuery/js代碼就緒()和它能夠在頁面加載時間執行,它不是能找到在形式上這些按鈕因爲它在加載後從服務器獲得並將其替換爲現有'div',因此無法調用事件處理程序。如果我爲這個表單的父div定義點擊處理程序,如果點擊'編輯'按鈕,它會收到點擊事件,因爲當初始頁面加載時,'div'出現了。如果你不得不在客戶端的表單上進行一些操作,我可能沒有正確地做,可能從服務器獲取整個表單不是一個好主意。但它是可行的嗎?如果是的話,最新的可能出路是什麼?謝謝!

+0

沒有'按鈕'元素,只有輸入類型按鈕,即你需要'$(「:button」)' – scibuff 2012-03-19 19:35:31

+3

@scibuff [我會懷疑](http://www.w3.org/TR /html401/interact/forms.html#h-17.5)。 – Shef 2012-03-19 19:37:21

+1

@scibuff - 當然還有一個按鈕元素。 http://www.w3.org/TR/html401/interact/forms.html#h-17.5 – j08691 2012-03-19 19:37:56

回答

3

您的活動未觸發,因爲您在頁面上存在的元素之前定義了它。使用.on()方法應該解決這個問題。沿線的東西:

$('body').on('click','button', function(){ 
    alert("click event"); 
}); 

應該工作。

+2

唯一的解決方案,這將是工作,當然不是每個人都更新他們的答案後。 :) – Shef 2012-03-19 19:44:50

+0

它似乎在工作。但有沒有什麼辦法可以找出點擊按鈕的ID /值? – 2012-03-19 19:58:27

+0

我想通了。謝謝! – 2012-03-19 20:01:32

2

使用on(jQuery 1.7及更高版本)。先前delegate(1.4.2+),即live前...

$('*your_form*').on('click', 'button', function(){ 
    alert("click event"); 
}); 
+0

如果通過AJAX調用添加按鈕,這將無法工作。 – j08691 2012-03-19 19:42:03

+0

@ j08691確實如此。我已經調整了他的現有表單作爲匹配的DOM元素,並委託給Ajax在裏面添加了'button' – 2012-03-19 19:46:57

0

您在使用按鈕ID

$('#buttonid').click(function(){ 
    alert("click event"); 
}); 

或按鈕類

$('.buttonclassname').click(function(){ 
     alert("click event"); 
    }); 
+2

哦,真的,爲什麼? – Shef 2012-03-19 19:38:04

+1

你爲什麼要這樣做? – j08691 2012-03-19 19:38:48

+0

剛剛發佈了我所知道的。我不能發佈你知道的:-) – zod 2012-03-19 19:40:14

3

如果我沒有理解調用您正確地將動態按鈕添加到窗體。你應該嘗試使用jQuery.on() insteed,看到http://api.jquery.com/on/

而且在你的榜樣,這可能爲你工作

$("body").on("button","click", function(event){ 
    alert("Hello world"); 
    }); 
+0

我在ready()中添加了這段代碼,但它不工作。 – 2012-03-19 19:48:34

+0

我錯了,並更新了我的答案.. – 2012-03-19 19:50:37

1

您可能只需要使用它代替:

$(document).on('click','button',function(){ 
    alert("click event"); 
}); 

(jQuery的1.7或更高)