我有几个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/
谢谢
答案 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");});