2011-03-22 66 views
0

我閱讀了很多關於我有問題的帖子,但一直無法解決它。我正在使用jQuery 1.5.1,並且在IE7上有'更改'事件。由於互操作性是必須的,我一直試圖(不成功)通過'change'事件使live()在IE7上工作。在IE7上'更改'事件,ajax和live()

有人建議使用livequery(),但對我而言,這也不是一個解決方案。

有沒有辦法讓選項窗體加載Ajax響應IE7上的'更改'事件,你會建議什麼?

順便說一句,代碼完美工作在IE8和FF。

謝謝! 紐曼

+0

我的例子中,你使用的是帶有變化的事件,元素?文本框,選擇列表等? – 2011-03-22 16:02:26

+0

選擇列表,對不起,我寫了「選項」,這並不意味着太多... – Newman 2011-03-22 16:04:43

回答

0

如果R值不要使用Ajax渲染選擇列表中的document.ready函數現場ü更好地利用$(選擇).change不會傳播在IE瀏覽器選擇列表中的變化情況,所以你不得不事件處理程序連接到選擇列出它自己。
編輯我使用下面的代碼

$.ajax({ 
type:"post", 
url:"/controls/selectlist", 
dataType:"html", 
success:function(data) 
{ 
    $("#result").append(data);//data will contain html of my select list with ID = mylist 
    $("#mylist").change(function(){ 
     //put event handling code here 
    }); 
} 
}); 
+0

好的,但是,如果它在頁面加載後加載了ajax,這個工作如何?也許我錯過了一些東西...... – Newman 2011-03-22 16:08:34

+0

如果它通過ajax加載,那麼在渲染頁面上的選擇列表之後,您將不得不在事件處理函數中添加回調函數。我也回覆了我的回答 – 2011-03-22 16:13:06

+0

好吧,我會試試這個,讓你知道結果。謝謝! – Newman 2011-03-22 16:18:14

0

你試過delegate,而不是活荷載選擇列表?

+0

是的,沒有運氣。 :) – Newman 2011-03-22 16:15:04

0

它正常工作對我來說,一定是你的代碼或瀏覽器...

看到這裏 http://jsfiddle.net/blowsie/82Adg/3/

$("select").live('change', function(){ 
alert('change') 
    }); 

$("#button").click(function(){ 
$("body").append("<select><option value='1'>1</option><option value='2'>2</option></select>") 
    return false 


}); 
+0

感謝您的代碼!是的,我已經嘗試了幾乎所有的東西,正如我所說的,它在IE8和FF上運行良好,但是IE7沒有運氣:( – Newman 2011-03-22 16:17:12

+0

奇怪,在ie7中對我很好。 – Blowsie 2011-03-22 16:20:24

+0

嗯。也許問題是我使用ajax加載內容load()函數? – Newman 2011-03-22 17:00:41