通过'这个'作为使用on()jQuery方法的事件处理程序的参数

时间:2017-12-17 20:53:39

标签: javascript jquery onclick event-handling jquery-events

我动态地将具有类.footprint的元素添加到DOM,并且需要向它们添加click()事件。我目前的代码如下:

$("#pcb").on("click", ".footprint", selectFootprint);

但是,selectFootprint(sender)方法有一个参数,我想传递DOM元素(this)。
我该怎么做?

3 个答案:

答案 0 :(得分:1)

急剧地,在on() jQuery函数中,this关键字代表被点击的元素,因此您可以按照自己的意愿调用该函数。

$( "#dataTable tbody" ).on( "click", "tr", function() {
  console.log( $( this ).text() );
});

(从起点)。

或者在你的情况下:

function selectFootprint(){
   console.log( $( this ).text() );
}
$("#pcb").on("click", ".footprint", selectFootprint);

答案 1 :(得分:1)

一些解决方案(传递父母背景):

1)使用jquerys数据参数:

$("#pcb").on("click", ".footprint", this, function(e){
  console.log(this, e.data);//data is the parents this
});

2)使用闭包

var sender = this;
$("#pcb").on("click", ".footprint", function(){
  selectFootprint.call(this, sender);
 });

或者,如果您只想传递.footprint

$("#pcb").on("click", ".footprint",function(){
 selectFootprint(this);
});

答案 2 :(得分:0)

不是直接使用selectFootprint作为回调,而是使用this作为参数定义一个调用selectFootprint的新函数(这在eventlistener中总是引用侦听器附加到的DOM元素)

$(".footprint").on("click", function() {
  selectFootprint(this);
});