jQuery - 包含方法的.each调用函数.on
问题描述:
我需要为“.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()});
答
您应该在当前元素上调用.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集合使用绑定功能,其绑定的集合中的所有元素。
方法.on不可用于Array? – 2014-09-23 10:48:26
这是可能的,但是为什么你想每次都通过循环来做?使用'.each()'来处理单个元素的重点。 – Barmar 2014-09-23 10:52:52
'lock'的元素是什么?他们是jQuery对象还是DOM元素? – Barmar 2014-09-23 10:57:10