我动态地将具有类.footprint
的元素添加到DOM,并且需要向它们添加click()
事件。我目前的代码如下:
$("#pcb").on("click", ".footprint", selectFootprint);
但是,selectFootprint(sender)
方法有一个参数,我想传递DOM元素(this)。
我该怎么做?
答案 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);
});