如何在Ajax调用的元素上注册mouserover
How to Register mouserover on elements from Ajax call
我正试图在用户单击按钮后生成的元素上注册mouseover事件。
这些元素是通过ajax生成的。mouserover似乎无法处理ajax创建的元素。我想知道是否有办法解决这个问题。非常感谢。
jQuery.ajax({
type: "GET",
url: "http://list.php",
data: null,
dataType:"json",
timeout: 10000,
global: true,
error: oh_no,
success:
});
var image = document.getElementById('image');
the image path are from ajax.
function listem(){
......codes
......codes
image.innerHTML= image.innerHTML + "<img src="'" + imagePath + '"'>";
}
$(document).ready(function(){
$('#image img').mouseover(function(){
alert('mouseOVER!!!');
});
})
html
<button id='showstuff' onclick='listem();'>show</button>
您还在页面加载中应用侦听器,但此时对象不存在。尝试创建一个类似"AddImageListeners()"的函数,并在ajax调用的"成功"部分调用它。
尝试使用委派(使用.on
方法)。您可以将事件处理委托给父对象:
$('#image').on('click', 'img', function() {});
您不能将鼠标悬停应用于尚不存在的元素,因此您的ready函数将仅应用于现有的#image。做一个关于ajax成功的函数来应用监听器,你应该很好。
jQuery.ajax({
type: "GET",
url: "http://list.php",
data: null,
dataType:"json",
timeout: 10000,
global: true,
error: oh_no,
success: function(){
$('#image img').mouseover(function(){
alert('mouseOVER!!!');
});
}
});
您需要根据jQ版本使用live、delegate或on,而不是将鼠标悬停在选择器上。
这意味着还应该将事件触发器添加到动态添加的内容(如ajax调用)中。
要做到这一点,请使用类似的东西。
$(document).ready(
$("html").on("mouseover","yourselector", yourOnMouseFunction())
);
祝你好运(如果你只想在某些选择器中使用实时事件,html可以被任何父选择器取代)。
您需要在通过ajax创建的元素中注入jquery。这将通过.live()
函数、.on()
函数或livequery
插件来完成。请参阅.live()
api.jquery.com/live和livequery
docs.jquery.com/Plugins/livequery 的链接
相关文章:
- 注册后是否可以定义HTML5自定义元素中的生命周期回调
- 没有为Ajax添加的新元素注册Jquery事件
- 如何在Ajax调用的元素上注册mouserover
- JQuery没有't在“t”上注册事件;刷新”;元素
- 在元素添加到DOM之前,将事件注册到元素中
- JavaScript一次性在多个元素上注册一个事件类型
- html元素是'由于父级的z索引为负,t注册js点击
- 注册单击列表项子元素
- 为什么我们必须注册一个自定义元素
- 聚合物元素注册和生命周期(创建和准备调用两次)
- 我有错误文档.注册元素未被细化
- 在重叠元素上注册鼠标事件
- 如何使用 Angular 注册现有元素
- 如何使用 JQuery 在 HTML 中注册动态创建元素的事件
- 从尚未注册到 DOM 的 jquery 对象中删除元素
- 如何使用传递给该模板的数据在车把模板中的元素上注册事件
- 聚合物在我的自定义函数之后注册所有元素
- 如何为DOM元素注册事件处理程序
- 在聚合物元素注册之前访问元素属性
- 如何使鼠标事件将 TR 元素注册为目标