如何通过这个'元素通过jquery on。('点击')到内部函数

时间:2015-12-12 15:30:08

标签: javascript jquery

如果我有一个像

这样的元素
<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现在测试

5 个答案:

答案 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);
  

https://api.jquery.com/click/

也可能想看一下这篇关于突兀js的帖子

  

https://stackoverflow.com/a/8392446

答案 4 :(得分:0)

在实施上述解决方案之前,请务必了解e.target和e.currentTarget之间的区别。你应该看看Difference between e.target and e.currentTarget