我正在尝试在ajax加载的元素上使用jQuery.one。如果已经加载了元素,那么它正在工作,但是当使用ajax加载元素时它没有。
这是我想要做的。
$("#selector").one('mouseenter', selMouseEnter);
function selMouseEnter() {
Some code....
}
提前谢谢。
沙市
编辑:
$(".pitem").on('mouseenter', selMouseEnter);
$(".pitem").mouseleave(function(){
jQuery(this).find(".tooltip").remove();
$(".pitem").on('mouseenter', selMouseEnter);
});
function selMouseEnter () {
jQuery(this).find(".tooltip").remove();
var id = $(this).attr('id').replace('myprize', '');
var myObj = jQuery('#Py').data('myprize' + id);
if(myObj) {
Some code that is opening tooltip having buttons....
}
}
现在冲突就是当我点击工具提示中的按钮时,它再次调用mouseenter事件而不是特定于按钮的事件。
注意:#PY使用ajax
答案 0 :(得分:1)
您必须在将元素放入页面后运行代码,因为您使用的是.one()
的静态格式,它要求在您运行代码时元素存在。
在jQuery 1.7+中,您可以像这样使用.one()
的委托版本,只要将#selector
对象添加到页面,它就会响应第一个mouseenter:
$(document).one('mouseenter', "#selector", selMouseEnter);
理想情况下,您应该使用运行此代码时存在的document
的静态父对象替换#selector
,因为这比使用document
对象更有效,尽管document
可行。
答案 1 :(得分:0)
为了在动态加载的元素上正确处理jquery事件,您需要以这种方式附加事件。
$("#parent").on({
mouseenter: function (e) {
// perform mouse enter event
},
mouseleave: function (e) {
// perform mouse leave event
}
}, '#selector');
其中#Parent表示动态加载元素的元素的id。
答案 2 :(得分:0)
因为它是动态加载的元素,所以您需要使用.live()或.on()或livequery()。有关详细信息,请参阅链接 - 根据您的jquery版本使用适当的方法