如果我有一个像
这样的元素<div class='some_class' onclick='executeF(this)'/>
这相当于:
$('.some_class').on('click',function(e){
executeF(this);
});
或
$('.some_class').on('click',function(e){
executeF(e);
});
或
$('.some_class').on('click',function(e){
executeF($(this));
});
我目前还没有办法测试这个,所以我只是想在进一步编写代码之前确定直接通信jquery方法是什么,因为(再次)我可以&#39 ; t现在测试
答案 0 :(得分:5)
$('.some_class').on('click',function(e){
executeF(e);
});
在上面的代码中,e
代表事件对象。要获取当前DOM元素,您需要使用e.currentTarget
This
这里将代表触发事件的DOM元素。
$(this)
将为您提供jQuery的元素数组。可以
您可以使用以下代码对此进行测试:
function Click(el) {
console.log(el)
}
$(".some_class").on("click", function(e) {
console.log("Event: ", e);
console.log("Current Target of Event: ", e.currentTarget);
console.log("this: ", this);
console.log("$(this): ", $(this));
})
div {
height: 100px;
width: 100px;
border: 1px solid silver;
margin: 10px;
padding: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div onclick="Click(this)">JS</div>
<div class="some_class">JQuery</div>
希望这有帮助!
答案 1 :(得分:0)
调用jQuery中的回调函数,使this
的值是对处理事件的DOM元素的引用。因此,您的第一段示例代码是正确的; executeF()
函数将传递DOM元素引用。
在授权的情况下:
$(document).on("click", ".some_class", function() {
// `this` refers to the "some_class" element
});
同样仍然成立:this
将引用委托目标元素,就好像事件处理程序与它直接关联一样。
答案 2 :(得分:0)
同等的那个将是第一个。
$('.some_class').on('click',function(e){
executeF(this);
});
论证&#39; e&#39;是指&#39;事件&#39;它调用了这个函数。
e.type = 'click'
事件上的toElement方法可以返回发生事件的元素,如下所示
e.toElement
当一个&#39; onclick&#39;被指定为属性,&#34;这个&#34;总是指&#39; DOMElement&#39;这意味着&#39;这个&#39;作为&#39;元素传递。
答案 3 :(得分:0)
简短的回答就是这样传递。
ExecuteF(){ Var elm = $this; Some other code for this function }
$('.some_class').on('click', executeF);
也可能想看一下这篇关于突兀js的帖子
答案 4 :(得分:0)
在实施上述解决方案之前,请务必了解e.target和e.currentTarget之间的区别。你应该看看Difference between e.target and e.currentTarget