2013-05-21 105 views
0

內不會觸發jQuery的點擊處理我有一個非常簡單的點擊處理程序,使一個AJAX請求GET上點擊,像這樣:模式窗口

$('span.switch-option').click(function() { 
    $(this).parents('div.log-in-option').hide(); 
    $(this).parents('div.log-in-option').siblings('div.log-in-option').fadeIn(); 
}); 

這工作完全在其他地方的網站上。但是,當我嘗試在模式窗口內單擊類switch-option<span>元素時,事件不會觸發。然而,在控制檯中輸入點擊處理函數的內容並運行它們確實會執行所需的行爲。

爲什麼點擊處理程序不會在此模式窗口中觸發?我正在使用流行的SimpleModal插件http://www.ericmmartin.com/projects/simplemodal/和jQuery 1.9.1。

現場示例如下:http://ec2-107-22-8-70.compute-1.amazonaws.com/thread/19。如果您點擊50,000 reps或任何用戶的聲譽,然後嘗試點擊對話框中的藍色大鏈接,點擊處理程序不會觸發。在其他模式窗口中的其他點擊處理程序也會發生此行爲。

回答

1

當腳本(main.js)正在運行'li.log-in, a.log-in'不會在DOM中存在的元素,它們是動態加載創建彈出時這樣jQuery是不能夠結合事件處理程序

嘗試事件傳播

$(document).on('click', 'li.log-in, a.log-in', function() { 
     $.get('/login/', function(data) { 
      //make a modal window with the html 
      $.modal(data); 
     }); 
     return false; 
    }); 
+0

現在就試試這個。我還更新了intitial問題中的JS代碼,因爲我錯誤地單擊了處理程序,但它根本不會改變問題。 – wnajar

+0

編輯:只是做了,做得很好。你是一個巫師,解釋是有道理的。我現在感覺像個假人。 – wnajar

+1

@wnajar查看更新後的答案,您可以在網頁中搜索使用jquery的動態元素和事件處理。在SO本身中有很多相同的問題處理,並且其他資源可用於Web –