suh*_*lvs 69 html ajax jquery dom
<div id="LangTable"><a class="deletelanguage">delete</a></div>
$('.deletelanguage').click(function(){
alert("success");
});
Run Code Online (Sandbox Code Playgroud)
<a>
通过ajax 设置一些,$('.deletelanguage').click
则无效.例如
function CreateRow(jdata) {
$('#LangTable').append('<a class="deletelanguage">delete</a>');
}
$.ajax({
url: "/jobseeker/profile/",
success: CreateRow
});
Run Code Online (Sandbox Code Playgroud)
$('.deletelanguage').click
,最后一个<a>
不起作用.jsfiddle示例:http://jsfiddle.net/suhailvs/wjqjq/
注意:CSS在这里工作正常.
我想让这些新附加的<a>
工作与jQuery单击.
TGH*_*TGH 176
问题是.click仅适用于页面上已有的元素.on
如果要连接未来的元素,就必须使用类似的东西
$("#LangTable").on("click",".deletelanguage", function(){
alert("success");
});
Run Code Online (Sandbox Code Playgroud)
Aru*_*hny 74
当您使用$('.deletelanguage').click()
注册的事件处理程序将其添加处理程序只存在于DOM中这些元素被执行的代码时
你需要在这里使用基于委托的事件处理程序
$(document).on('click', '.deletelanguage', function(){
alert("success");
});
Run Code Online (Sandbox Code Playgroud)
coo*_*guy 21
$('body').delegate('.deletelanguage','click',function(){
alert("success");
});
Run Code Online (Sandbox Code Playgroud)
要么
$('body').on('click','.deletelanguage',function(){
alert("success");
});
Run Code Online (Sandbox Code Playgroud)
由于该类是动态添加的,因此您需要使用事件委派来注册事件处理程序,如:
$('#LangTable').on('click', '.deletelanguage', function(event) {
event.preventDefault();
alert("success");
});
Run Code Online (Sandbox Code Playgroud)
这会将您的事件附加到#LangTable
元素中的任何锚点,从而减少必须检查整个document
元素树和提高效率的范围.
这是小提琴
与您的代码相同,但它适用于动态创建的元素。
$(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>');
});
Run Code Online (Sandbox Code Playgroud)