如何在定义的回调函数中访问$(this)和event
How to access $(this) and event in defined callback function
我试图通过回调函数启用一些触摸控制,但我在回调函数中访问事件以及$(this)时遇到了麻烦。现在代码如下所示:
$('.img-responsive').each(touchControls);
function touchControls(event) {
event.preventDefault();
var mc = new Hammer(this);
mc.on("doubletap", function() {
console.log($(this));
});
}
"。Img-responsive '是我页面上的一类图片。
当它尝试调用event时。preventDefault,我得到一个错误。preventDefault不是一个函数。我认为事件是自动传递给变量称为?我知道当我用.on做一个命名的回调函数时,event.preventDefault()工作得很好。我假设使用。each时是不同的,我如何正确地访问它?
现在,如果我删除event.preventDefault()行,当它记录$(this)时,我得到一个函数。我希望获得独立的元素,这样我就可以为它们设置触摸控制,但这显然行不通。我试图绑定'this':
$('.img-responsive').each(touchControls).bind(this);
但是当我记录$(this)时,它仍然是一个函数,而不是我期望的元素。
我基本上只是困惑如何访问$(this)和事件在定义的回调函数
.each
不是事件处理程序,因此它的回调函数不接受event
对象。each
回调函数的方法签名如下:
。each(function)
function
类型:Function(Integer index, Element Element)
对每个匹配的元素执行的函数。
所以你不会有一个event
对象来引用,但更重要的是,没有默认的事件行为来防止。
相反,on
实际上设置事件处理程序。它的回调函数确实以事件作为参数。您可以在事件处理程序代码中处理事件管理,在.on
的回调函数中。
this
将在迭代时引用当前元素。但是在内部回调函数中会有一个不同的上下文(所以是不同的this
)。只需在外部作用域中存储对元素的引用:
function touchControls() {
var $this = $(this);
var mc = new Hammer(this);
mc.on("doubletap", function(e) {
e.preventDefault();
console.log($this);
});
}
在错误的函数中传递事件。您需要将其传递给事件侦听器。每个循环的第一个参数是迭代的当前索引。
$('.img-responsive').each(touchControls);
function touchControls(eachIndex) {
var mc = new Hammer(this);
mc.on("doubletap", function(event) {
// move preventDefault here and pass the event
event.preventDefault();
console.log($(this));
});
}
function Hammer(el){
return $(el)
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="img-responsive">img</div>
<div class="img-responsive">img</div>
- $(this).prop('property') vs. this.property
- issue with FB.Event.subscribe
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- Angularjs :$routeChangeStart event
- 在另一个函数中使用变量this
- this.router在AngularJS 2中未定义
- reactjs this.refs vs document.getElementById
- JavaScript 中的嵌套函数和 “this” 关键字
- event.prventDefault()持续多久
- React+Meteor:this.ops返回未定义
- javascript中对象构造函数中的var属性与this.properties
- 在命名处理程序函数中使用 $(this) & event
- 在JS函数中传递“this”和“event”
- $(this) vs e.target or event.target in jquery
- Javascript bind "this" to event
- 我应该用“this”吗?或“;event.target"在javascript
- event.target.id VS event.currentTarget.id VS this.id
- 如何在定义的回调函数中访问$(this)和event
- jQuery事件绑定:this === Event.Target为真,但$(this) === $(event.targ
- JQuery: 'this'在JQuery-Event-Handler中无法访问