addEventListener在事件侦听器中不起作用

时间:2011-09-28 12:49:59

标签: javascript firefox-addon

我有一个事件监听器,它监听文件加载(这是“myExtension”并且它正常工作)。我想把另一个监听器放入这个监听器,但它不起作用。这就是听众:

 myExtension.$("#quicklink img").addEventListener("click", function(){ alert("It's works!"); }, false, true);

但如果我将该侦听器更改为此侦听器:

 document.addEventListener("click", function(){ alert("It's works!"); }, false, true);

它可以正常工作。

$("#quicklink img") - 它是一个包含图像的数组,页面中有一些(0-20 ea)。

我想使用这个,只有一些页面,所以我需要myExtension,因为我不想在所有网站上工作,其中img是一个带有quicklink id的元素。

为什么它不起作用?有什么问题?

3 个答案:

答案 0 :(得分:2)

  

$(“#quicklink img”) - 这是一个带图像的数组,页面中有一些(0-20 ea)。

数组没有addEventListener方法。你必须循环它并在每个HTMLElementNode上调用addEventListener

答案 1 :(得分:0)

你需要在每个图像上添加监听器

$("#quicklink img").each( function(){
  $(this).click(function(){
    alert("It's work");
  });
});

答案 2 :(得分:0)

我找到了答案

window.addEventListener("load", function() { myExtension.init(); }, false);
var myExtension = {
 $: jQuery.noConflict(true),

 init: function() {
  gBrowser.addEventListener("DOMContentLoaded", myExtension.onPageLoad, true);
 },

onPageLoad: function(aEvent) {
 [...]
 var wnd = aEvent.target.defaultView;
 wnd.document.getElementById('a1').addEventListener("click", function(){ alert("It's works!"); }, false, true);
 [...]
}

其中“a1”是一个图像ID