2015-08-24 81 views
0

最近我寫了一個jQuery skript(切換),這是爲我工作:jQuery代碼不工作

$("input[id^='show_Fulltext']").click(function(){ 
    $("#Fulltext".concat($(this).val())).toggle('Drop'); 
    }); 

這裏是周圍的HTML代碼(紅寶石混合):

<%= @final[0..175]%><div id="Fulltext<%[email protected]%>" style="display:none;"><%[email protected][[email protected]]%></div> 
    <% if @final.length > 176 %> 
    <a><input type="image" src="" alt="[...]" value='<%[email protected]%>' id='show_Fulltext<%= @count%>'></input></a> 
    <% end %> 

我很快解釋它的作用。如果ruby變量@final中的文本較大,則所有超文本文本將放入ID爲FulltextX的div中。 FulltextX是一個運行號碼,因爲有多個這些字段,我不想擁有相同的ID。

好吧,迄今爲止好 - 一切正常。 現在我有這些div與id Fulltext1,Fulltext2,Fulltext3等多個。我可以切換他們每個人,如果他們有更多的字符比175。完美的作品。

現在我的問題:我可以改變顯示哪些文本。這也是在JQuery中完成的。那麼 - 現在的問題是。我改變頁面後,我的切換功能不再工作。

我發現了一個很不錯的博客,解釋如何我可以修復它: http://blog.codebusters.pl/en/click-doesn-t-work-after-ajax-load-jquery/

我想這正是事情我應該做的,以解決這個問題。不幸的是,現在我真的堅持讓我的代碼適應剛剛提到的博客中的給定示例。

任何幫助我的代碼適應所顯示的代碼都是有幫助的。我認爲在適應之後,即使在頁面改變之後切換也應該工作。

回答

3

您正在註冊點擊處理程序的元素已經存在但動態創建(可能使用ajax調用)元素不會得到這個點擊處理程序。

您需要註冊後點擊事件處理程序使用.on()動態生成的元素顯示在下面的代碼

$(document).on("click", "input[id^='show_Fulltext']", function(){ 
    $("#Fulltext".concat($(this).val())).toggle('Drop'); 
}); 

上面的代碼將動態添加,以及在頁面加載時創建的元素工作。

+0

非常感謝!這工作! – Donselm

+0

高興地幫助你:) –