Javascript 将此传递给方法?

Javascript 将此传递给方法?,javascript,jquery,Javascript,Jquery,我正在尝试获取生成单击的元素,但我还需要访问num属性 我怎样才能在我的delete方法中访问这两种类型的“this”?我不知道你在问什么,但也许这就是你想要的: p.num = 100; $('body').on('click', '.del', this.delete.bind(this)); p.delete = function(e) { console.log(this.num); //100 //how can I get the .del elemen

我正在尝试获取生成单击的元素,但我还需要访问num属性


我怎样才能在我的delete方法中访问这两种类型的“this”?

我不知道你在问什么,但也许这就是你想要的:

p.num = 100;    
$('body').on('click', '.del', this.delete.bind(this));

p.delete = function(e) {
     console.log(this.num); //100
     //how can I get the .del element?

}
免责声明:以下是我的准确答案(根据当前代码改编):

然而,这个问题似乎并不完全相同(但我可能错了)


如的文档中所述,您可以将数据传递给事件

.on(事件[,选择器][,数据],处理程序)

数据 类型:什么都行

触发事件时传递给event.Data中处理程序的数据

所以你的活动可以是这样的:

var p = {};
p.num = 100;    
$('body').on('click', '.del', p.delete); // don't bind to this

p.delete = function(e) {
     console.log(p.num); // here you still can call p
     // this is del DOM element

}

事件的回调接收一个
事件
对象,您可以使用该对象检索调用事件的元素

p.num = 100;    
$('body').on('click', '.del', {object : this}, this.delete);

p.delete = function(e) {
  var myObj = e.data.object;
  // [myObj] will be your plugin
  // [this] will be the clicked element
  // [e] will be you event
}

如果您使用的是jquery,则可以将这些函数组合为一个函数,如下所示:

注意:num是一个属性,因此必须使用
.attr()

$(文档).ready(函数(){
$('body')。在('click','del',function()上{
var num=$(this.attr('num');
警报('click function and num='+num);
});
});

function(e) {
    var element = $(e.target); //This is the element that the event was called on.
}