Javascript 通过jQuery提交表单';行不通
我试图在单击表单提交按钮时调用函数。页面不应该刷新,我想通过AJAX添加类别 问题是,当我手动将其添加到html文件中时,一切都正常,但当我尝试通过Javascript 通过jQuery提交表单';行不通,javascript,forms,jquery,Javascript,Forms,Jquery,我试图在单击表单提交按钮时调用函数。页面不应该刷新,我想通过AJAX添加类别 问题是,当我手动将其添加到html文件中时,一切都正常,但当我尝试通过appendTo将其添加到javascript函数中时,从未调用click函数。这里有什么问题 Javascript: $(".addCategoryBtn").click(function() { console.log('add category clicked'); }); JavaScript函数的一部分: h
appendTo
将其添加到javascript函数中时,从未调用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"> <input type="text" class="inptHtmlColor" placeholder="Hintergrund: #000FFF"> <input type="text" class="inptTextColor" placeholder="Text: #000FFF"><input type="button" value="Go" class="addCategoryBtn"></form></div>';
$(html).appendTo($('body'));
html+='
';
$(html.appendTo($('body'));
因为必须使用函数绑定动态内容事件:
$("body").on('click','.addCategoryBtn',function() {
console.log('add category clicked');
});
对于动态内容,在使用jquery 1.7或更高版本时,请使用: 对于jQuery 1.6.x及更低版本,包括1.4.3,请使用: 对于jQuery 1.4.2或更低版本,请在追加后使用:
html += '<br><br><form id="addCategory_form" action=""><input type="text" class="inptCategoryName" placeholder="Kategorie Name"> <input type="text" class="inptHtmlColor" placeholder="Hintergrund: #000FFF"> <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');
});
html+='
';
$(html.appendTo($('body'));
$(“.addCategoryBtn”).bind(“单击”,函数(){
log('addcategory clicked');
});
因此,无论你做什么,都要尽量避免你能显示一些HTML以便我查找错误吗?在不太可能的情况下,OP正在使用jQuery 1.6.x或更低版本,使用
delegate
,因为on
只在1.7中添加了on。uncaughttypeerror:Object#没有方法“on”
你在使用哪个jQuery版本?非常旧。。。在这种情况下,检查@FrançoisWahl answer,这是一个goos总结,也是对下一个问题的建议,不要忘记指定JQuery版本库。您的意思是:对于jQuery 1.4.2或更低版本,在追加后使用bind?使用bind()
类似于使用click()
,但您必须在追加HTML后执行它,因为这些方法只有在元素位于DOM中时才有效。由于在1.4.3中添加了delegate
,如果要使用1.4.2或更低版本,则不能使用它。虽然live()
存在于1.4.2中,但它还有其他问题,如果可能的话应该避免。
$("body").delegate('.addCategoryBtn', 'click', function() {
console.log('add category clicked');
});
html += '<br><br><form id="addCategory_form" action=""><input type="text" class="inptCategoryName" placeholder="Kategorie Name"> <input type="text" class="inptHtmlColor" placeholder="Hintergrund: #000FFF"> <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');
});