4

单击表单提交按钮时,我试图调用一个函数。页面不应该刷新,我想通过 AJAX 添加类别。

问题是当我手动将其添加到 html 文件时一切正常,但是当我尝试通过 将其添加到 javascript 函数中时appendTo,永远不会调用 click 函数。这里有什么问题?

Javascript:

$(".addCategoryBtn").click(function() {  
       console.log('add category clicked');
    });  

JavaScript 函数的一部分:

html += '<br><br><form id="addCategory_form" action=""><input type="text" class="inptCategoryName" placeholder="Kategorie Name">&nbsp;<input type="text" class="inptHtmlColor" placeholder="Hintergrund: #000FFF">&nbsp;<input type="text" class="inptTextColor" placeholder="Text: #000FFF"><input type="button" value="Go" class="addCategoryBtn"></form></div>';

$(html).appendTo($('body'));
4

2 回答 2

4

对于动态内容,当使用 jquery 1.7 或更高版本时,使用on()

$("body").on('click','.addCategoryBtn',function() {  
    console.log('add category clicked');
});

对于 jQuery 1.6.x 及更低版本,包括 1.4.3 使用delegate()

$("body").delegate('.addCategoryBtn', 'click', function() {  
   console.log('add category clicked');
}); 

对于 jQuery 1.4.2 或更低版本,请在附加后使用bind :

html += '<br><br><form id="addCategory_form" action=""><input type="text" class="inptCategoryName" placeholder="Kategorie Name">&nbsp;<input type="text" class="inptHtmlColor" placeholder="Hintergrund: #000FFF">&nbsp;<input type="text" class="inptTextColor" placeholder="Text: #000FFF"><input type="button" value="Go" class="addCategoryBtn"></form></div>';

$(html).appendTo($('body'));

$(".addCategoryBtn").bind("click", function() {  
    console.log('add category clicked');
}); 

不管怎样,无论你做什么,尽量避免live()

于 2013-01-29T17:41:31.723 回答
3

因为动态内容事件必须使用on函数绑定:

$("body").on('click','.addCategoryBtn',function() {  
       console.log('add category clicked');
}); 
于 2013-01-29T17:35:59.163 回答