在不同对象上使用相同事件的最短方法

时间:2015-02-01 17:00:09

标签: javascript

我有几个JavaScript对象(显式Raphael.js路径),我想在其上应用一个事件。 (例如:" .mouseover()")

示例:

var p = Raphael(1, 1, 600, 600);
        var x = p.path("M100 100 L 300 100") //first raphael.js path
        var y = p.path(("M100 200 L 300 200") //second raphael.js path
        var z = p.path(("M100 300 L 300 300") //third raphael.js path

var doStuff = function () {
                 //doStuff
                };




   x.mouseover(doStuff);
   y.mouseover(doStuff);
   z.mouseover(doStuff);

问题:有没有办法缩短这个, 所以你只需要写一次.click(doStuff)

JSFiddle示例:http://jsfiddle.net/utg3k5mo/

谢谢

1 个答案:

答案 0 :(得分:2)

现在你已经添加了一个jsFiddle,我知道你在说什么。我之前建议使用jQuery的.add()函数的方法,因为你用jQuery标记了你的问题;但是,你使用的是Raphael而不是jQuery,所以这种方法并不适合你。请更改该标签。

缩短程序的最佳方法是创建一个包含变量的数组并迭代它:

var array = [x, y, z];
for(var i in array)
    array[i].mouseover(doStuff);

<小时/> 旧回答:

jQuery使用.click().onClick()不存在。

有两种方法可以解决您的问题:

首先,您可以将事件处理程序存储在变量中并将其传递给.click()函数:

var eventHandler = function() {alert("test");};
x.click(eventHandler);
y.click(eventHandler);
z.click(eventHandler);

或者您可以添加变量并在新集上调用.click(function)

x.add(y).add(z).click(function() {alert("test");});