附加html上的preventDefault()不起作用.为什么?
preventDefault( ) on appended html does not work. why?
标题非常不言自明。我在AJAX调用中将HTML附加到我的文档中,并且当您单击由该函数生成的<a>
标记时,我希望防止出现默认事件。这是我的代码:
$.ajax({
type: 'GET',
url: "/api/search/info/" +id,
accepts: 'application/json'
}).then(function(data, status, xhr) {
$(".book-results #results").append("<a class='bookitem' href='b"+data.value+"'>Add Book</a>");
}, showErr);
在同一个javascript文件中(但不在AJAX函数中(,我有一个监听器:
$(".bookitem").click(function(event) {
event.preventDefault();
console.log("HELLO");
});
当我触发ajax事件时,会填充.book-results #results
,但当我单击<a>
标记时,会触发默认事件。有没有办法让听众发挥作用?如果是,如何?
在试图附加侦听器的元素存在之前,不能应用事件侦听器。因此,$(".bookitem").click(function(event) {...});
将仅将元素与当时存在的bookitem
类绑定。
如果要动态添加元素,则需要在创建这些元素后将事件处理程序附加到这些元素,或者更好地使用委派。
对于委派,您将事件处理程序附加到父元素,例如:
$(".book-results #results").on("click",".bookitem", function(event) {
// your handler goes here.
});
对于jQuery版本1.7或更高版本,请使用.on()
。。。
$(document).on("click", ".bookitem", function(event){
event.preventDefault();
console.log("HELLO");
});
否则使用.delegate()
。。。
$(body).delegate(".bookitem", "click", function(event){
event.preventDefault();
console.log("HELLO");
});
尝试:
$(".book-results").on('click','a',function(event) {
event.preventDefault();
console.log("HELLO");
});
创建元素后必须附加事件。。。
$.ajax({
type: 'GET',
url: "/api/search/info/" +id,
accepts: 'application/json'
}).then(function(data, status, xhr) {
$(".book-results #results").append("<a class='bookitem' href='b"+data.value+"'>Add Book</a>");
$(".bookitem").click(function(event) {
event.preventDefault();
console.log("HELLO");
});
}, showErr);
相关文章:
- Js.erb VS按钮标记-不'不起作用.为什么?
- 我的jquery代码不起作用.为什么?
- 代码在firefox中运行良好,但在chrome中不起作用.为什么?
- 谷歌地图 JS API v3:使用 containsLocation() 获取圆圈标记不起作用 - 为什么
- 为函数中的现有数组(全局变量)分配新值不起作用.为什么
- Firefox Addon Builder首选项-服务对我不起作用--为什么
- 将D3函数封装在对象内部;不起作用.为什么?
- 敲除绑定处理程序不起作用:为什么
- I'我试图让jquery在我的chrome扩展的background.js中工作,结果成功了;不起作用.为什么?
- blueimp 文件上传插件中的 max文件大小和接受文件类型不起作用.为什么
- 我有两个具有相同代码的不同域,但其中一个不起作用.为什么
- 简单的HTML/CSS选项卡导航在Safari 9中不起作用.为什么
- Jquery focus()和blur()对我的href不起作用.为什么
- 承诺链不起作用.为什么
- 返回页首滚动jquery在chrome中不起作用.为什么?它在firefox中运行良好
- 为什么是宽度100%的html代码全栏不工作,当我写.忘了那个吧,连复制粘贴都不起作用.为什么
- 使用for循环在数组中查找字符串是有效的,但是这里的forEach()不起作用.为什么以及如何纠正
- 附加html上的preventDefault()不起作用.为什么?
- jQuery元素上的加号或减号不起作用.为什么?
- jquery的正则表达式选择器不起作用.为什么