jQuery点击函数在ajax调用后不起作用?
jQuery点击function在这里工作正常
<div id="LangTable"><a class="deletelanguage">delete</a></div> $('.deletelanguage').click(function(){ alert("success"); });
但如果我通过ajax设置一些<a>
, $('.deletelanguage').click
不起作用。
例如
function CreateRow(jdata) { $('#LangTable').append('<a class="deletelanguage">delete</a>'); } $.ajax({ url: "/jobseeker/profile/", success: CreateRow });
现在$('.deletelanguage').click
最后一个<a>
不起作用。
jsfiddle例子: http : //jsfiddle.net/suhailvs/wjqjq/
注意:CSS在这里工作正常。
我想使这些新添加的<a>
与jQuery点击工作。
问题是.click只适用于页面上已有的元素。 如果你接线未来的元素,你必须使用类似的东西
$("#LangTable").on("click",".deletelanguage", function(){ alert("success"); });
当你使用$('.deletelanguage').click()
来注册一个事件处理程序时,它只$('.deletelanguage').click()
这个处理程序添加到当代码执行时在dom中存在的那些元素
你需要在这里使用基于委托的事件处理程序
$(document).on('click', '.deletelanguage', function(){ alert("success"); });
$('body').delegate('.deletelanguage','click',function(){ alert("success"); });
要么
$('body').on('click','.deletelanguage',function(){ alert("success"); });
由于类是dynamic添加的,因此您需要使用事件委托来注册事件处理程序,如下所示:
$('#LangTable').on('click', '.deletelanguage', function(event) { event.preventDefault(); alert("success"); });
这将把你的事件附加到#LangTable
元素中的任何锚点,减less了检查整个document
元素树和提高效率的范围。
FIDDLE DEMO
这是FIDDLE
与您的代码相同,但它将在dynamic创build的元素上工作。
$(document).on('click', '.deletelanguage', function () { alert("success"); $('#LangTable').append(' <br>------------<br> <a class="deletelanguage">Now my class is deletelanguage. click me to test it is not working.</a>'); });
点击事件在事件定义的那一点不存在。 您可以使用现场或委派事件。
$('.deletelanguage').live('click',function(){ alert("success"); $('#LangTable').append(' <br>------------<br> <a class="deletelanguage">Now my class is deletelanguage. click me to test it is not working.</a>'); });
我testing了一个适合我的简单解决scheme! 我的JavaScript是在一个JS单独的文件。 我所做的就是将新元素的javascript放到了用ajax加载的html中,对我来说工作正常! 这是为那些有大文件的JavaScript!