jQuery.on()委派和'这'价值
jQuery .on() delegating and the 'this' value
我有一个脚本,它遇到了一些问题:
(function($) {
$.fn.extend({
iH: function() {
$(document).on('mouseenter', this, function(e) {
alert('this is the element');
})
}
})
})(jQuery);
然后在体内:
$(function(){
$('.elem').iH();
});
<div class="elem">element</div>
我已经创建了一个小提琴这里
基本上,如何使实际元素this
成为回调函数中的this
元素,有什么想法吗?
此外,我不想使用.live()
或.delegate()
,因为它们已经折旧。
编辑:
我之所以尝试这样做,是因为我试图绑定DOM中可能不存在的元素,IE我可以这样做:
(function($) {
$.fn.extend({
iH: function() {
$(this).on('mouseenter', function(e) {
alert('this is the element');
})
$(this).live('mouseenter', function(e) {
alert('Depreciated LIVE function');
})
}
})
})(jQuery);
然而,它不会触发事件绑定后添加的任何元素,但.live()
会触发它:
$('body').append($('<div />').addClass('elem').html('content'));
$('.elem').iH();
$('body').append($('<div />').addClass('elem').html('content'));
就像我说的,.live()
已经贬值了,所以我尽量不使用它
更新fiddle HERE
澄清以供未来参考
由于给出了(正确的)答案,所以问题实际上是我向函数传递了一个jQuery对象。经过进一步的调查,我发现您确实可以在函数中使用this
变量来指向受影响的元素:
$.fn.extend({
iH: function() {
$(document).on('mouseenter', this.selector, function(e) {
alert($(this).html());
});
}
})
$('.elem').iH();
$('body').append('<div class="elem">Value</div>')
演示:jsFiddle#3
你在找这样的东西吗?
$.fn.extend({
iH: function() {
var $this = $(this);
$(document).on('mouseenter', $(this).selector, function(e) {
var $el = $(this);
alert('this is the element: ' + $el.html());
})
}
});
$('.elem').iH();
此处更新了fiddle
编辑:我想我理解你的问题。代码在FF中似乎可以正常工作,但在IE中却不行。.on
中的第二个参数是选择器,当您使用this
对象时(至少在IE中),它就不能正常工作。
尝试使用$(this).selector
而不是this
。见下文,
更新演示
$.fn.extend({
iH: function() {
$(document).on('mouseenter', $(this).selector, function(e) {
alert(e.target.className);
});
}
})
$('.elem').iH();
行为是正确的,函数内的this
对象是document
对象,因为鼠标事件绑定了document
对象。但是,如果您想要div
元素,则需要使用e.target
DEMO
相关文章:
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- Chrome扩展没有't在重新加载之前考虑期权价值
- 我怎样才能获得承诺的价值
- I'我设计了一个下拉菜单,onclick会出现,而on blur会消失
- window.on.scroll事件未启动
- Socket.io on Mozilla Rhino
- CSS中的游标属性似乎不适用于USB On The Go
- jQuery点击ON现在使用.load触发关闭
- JQuery.on(“keydown”)追加到页面时不工作
- 使用.on动态添加jquery/js不知道的html元素
- angularjs$valid-on-dates在firefox中报告错误
- addEventListener on NodeList
- 当我在节点上拖动鼠标时,我如何防止使用d3.ehavior.zoom().on(“缩放”,重绘)
- jQuery 1.7.2:.on()在一个页面上工作;Don’别再干别的了
- 在Meteor Mongo中寻找价值
- Jquery on单击“显示信息”
- 平均值.on(事件[,选择器][,数据],处理程序)
- 多个jQuery.on()事件无法运行xBrowser(取决于顺序)
- 如何使jQuery的“bind”或“on”事件处理程序幂等
- jQuery.on()委派和'这'价值