Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery在与javascript对象关联的元素上单击触发器_Javascript_Jquery_Html - Fatal编程技术网

jQuery在与javascript对象关联的元素上单击触发器

jQuery在与javascript对象关联的元素上单击触发器,javascript,jquery,html,Javascript,Jquery,Html,我的页面上有一个部分,有几个街区。加载此页面时,我创建了一个数组blocks[],它为每个块存储一个block对象,其中包含关于块的更多信息 function block(info, DOM) { this.id = info["id"]; this.DOM = DOM; this.title = info["title"]; this.icon = info["icon"]; this.author = info["author"]; } DOM字段保

我的页面上有一个部分,有几个街区。加载此页面时,我创建了一个数组blocks[],它为每个块存储一个block对象,其中包含关于块的更多信息

function block(info, DOM) {
    this.id = info["id"];
    this.DOM = DOM;
    this.title = info["title"];
    this.icon = info["icon"];
    this.author = info["author"];
}
DOM字段保存与对象关联的块。现在,我正试图找出在单击块时获取块对象的最佳方法

$(".block").click(..)

我目前正在考虑使用上面的“^”,然后使用clicked元素的索引从blocks[]数组中获取block对象,但我想知道是否有某种方法可以更直接地将其链接到block中的.DOM字段,比如在block类中有一个特定的click触发器。有没有一种更干净的方法可以做到这一点,或者我应该只使用索引?提前谢谢

是的,这确实是一种方法

但是,不要像下面所示那样为每个块附加事件处理程序

$(".block").click(function(e){
  // do event handling
});
您可以尝试如下所示

$(".block").click(function(e){
  // do event handling
});
您可以使用事件委派

var blocks=[{},{},{}];

$("parent_for_blocks").on('click', '.block', function(e){
  // do event handling
  var index = $(this).index();
  console.log(blocks[index]);  // returns clicked block information
});

是的,这确实是一种做法

但是,不要像下面所示那样为每个块附加事件处理程序

$(".block").click(function(e){
  // do event handling
});
您可以尝试如下所示

$(".block").click(function(e){
  // do event handling
});
您可以使用事件委派

var blocks=[{},{},{}];

$("parent_for_blocks").on('click', '.block', function(e){
  // do event handling
  var index = $(this).index();
  console.log(blocks[index]);  // returns clicked block information
});
如果您想创建(并传递)一个
this.$DOM
,它将是jQuery元素对象。如果您想创建(并传递)一个
this.$DOM
作为jQuery元素对象,那么您可以执行
reference.$DOM.click()
。比你能做的还要多。$DOM.click()