2014-09-23 54 views
-2

我需要为“.each”元素使用jquery方法“.on”,但是我做错了什么......任何人都可以帮忙?jQuery - 包含方法的.each调用函数.on

得到SVG的ID的,并把它们放入数组:

var svgZi10 = document.getElementById("svg"); //get the main SVG container 
    var svgElementZi10 = svgZi10.contentDocument; //get the inner DOM from SVG 

var lock = []; //new Array 
lock[0] = svgElementZi10.getElementById("lock-door-open-right-contour"); //get the inner element by id 
lock[1] = svgElementZi10.getElementById("lock-door-open-left-contour"); //get the inner element by id 
lock[2] = svgElementZi10.getElementById("lock-door-closed-right-contour"); //get the inner element by id 
lock[3] = svgElementZi10.getElementById("lock-door-closed-left-contour"); //get the inner element by id 

操作与该数组中的对象(不工作):

$.each(lock, function(i,element) { 
     $(element).on("mousedown",function(){tab12[0].click() }) 
    }); 

时为每个对象separetly(作品):

var lock1 = svgElementZi10.getElementById("lock-door-open-right-contour"); //get the inner element by id 
var lock2 = svgElementZi10.getElementById("lock-door-open-left-contour"); //get the inner element by id 
lock1.addEventListener("mousedown",function(){tab7[0].click()}); 
lock2.addEventListener("mousedown",function(){tab7[0].click()}); 

回答

1

您应该在当前元素上调用.on(),否t为数组:

$.each(lock, function(i,element) { 
    $(element).on("mousedown",function(){tab12[0].click() }) 
}); 

如果lock是DOM元素的数组,你不需要.each。当你给jQuery()一个元素数组时,它会创建一个包装它们的jQuery对象。所以,你可以只写:

$(lock).on("mousedown", function() { 
    tab12[0].click(); 
}); 

当你在一个jQuery集合使用绑定功能,其绑定的集合中的所有元素。

+0

方法.on不可用于Array? – 2014-09-23 10:48:26

+0

这是可能的,但是为什么你想每次都通过循环来做?使用'.each()'来处理单个元素的重点。 – Barmar 2014-09-23 10:52:52

+0

'lock'的元素是什么?他们是jQuery对象还是DOM元素? – Barmar 2014-09-23 10:57:10