2010-09-09 92 views
1

我遇到了這個腳本的問題,併爲我的生活我無法弄清楚它有什麼問題。通過我有什麼快捷方式:jQuery .click()不會觸發鏈接動態創建.wrapInner()

的HTML:

<ul> 
    <li id="wildcard_1"> 
     <div> 
      <a href="#">test</a> 
     </div> 
    </li> 
</ul> 
<a href="#" class="reset">reset</a> 

jQuery的:

// Main function 
$("[id^=wildcard_]").children('div').children('a').click(function() { 
    $(this).replaceWith($(this).text()); 
}); 

// Temporary reset function 
$("a.reset").click(function() { 
    $("[id^=wildcard_]").children('div').wrapInner('<a href="#"></a>'); 
}); 

因爲它應該在第一次 「考試」 環節的工作原理是是被點擊 - 它正在被轉換成純文本)。爲了不在這裏粘貼大量的腳本,我創建了一個臨時函數來包裝div的內容,將「測試」純文本轉換回鏈接。這就是它失控的地方 - 第一個函數的.click()偵聽器不會在這個動態創建的鏈接上觸發,FireBug不會引發任何錯誤或警告。

您還可以看到的jsfiddle這個活:http://jsfiddle.net/rWz69/

任何幫助就這將超過讚賞!

回答

11

您可以使用.live()處理程序,如:

$(document).on("click", "[id^=wildcard_] > div > a" , function() { 
    $(this).replaceWith($(this).text()); 
}); 

Here's your fiddle example updated/working with the above code :)

+2

問1分鐘前,回答23秒前。我很肯定你是個電子人,尼克。 – Robert 2010-09-10 00:01:56

+0

簡直太棒了,該死的太快了!有趣的是,在看到你的回答後第一個想到的事情是「上帝,我的選擇是醜陋的」:)無論如何,如果問題不是太多,因爲我的方法幾乎使我瘋狂,請你解釋一下幾句話爲什麼它不起作用,所以我可以在將來避免它?非常感謝,哥們! – 2010-09-10 00:08:45

+0

+1回答這麼快,我可以補充。 – 2010-09-10 00:12:15

相關問題