......
sets.id = index;
grid.hex[poly].click(
function(e)
{
var id=this.id
.....
它正确设置sets []的id,但是“this”的id是集合内部路径的id,即被点击的id。我必须拥有套装的ID。我怎么能做到这一点?
修改: 我希望“this”成为集合,而不是被点击的路径。
答案 0 :(得分:1)
将功能绑定到sets
......
sets.id = index;
grid.hex[poly].click($.proxy(function(e){
var id = this.id;
}, sets);
.....
或者如果你没有使用jQuery。
//https://gist.github.com/978329
if(!Function.prototype.bind) {
Function.prototype.bind = function(to){
// Make an array of our arguments, starting from second argument
var partial = Array.prototype.splice.call(arguments, 1),
// We'll need the original function.
fn = this;
var bound = function (){
// Join the already applied arguments to the now called ones (after converting to an array again).
var args = partial.concat(Array.prototype.splice.call(arguments, 0));
// If not being called as a constructor
if (!(this instanceof bound)){
// return the result of the function called bound to target and partially applied.
return fn.apply(to, args);
}
// If being called as a constructor, apply the function bound to self.
fn.apply(this, args);
}
// Attach the prototype of the function to our newly created function.
bound.prototype = fn.prototype;
return bound;
}
grid.hex[poly].click(function(e){
var id = this.id;
}.bind(sets));
答案 1 :(得分:0)
你试过吗?:
var id = this.parentElement.id
<强>更新强>
Raphaël['ræfeɪəl]使用SVG W3C推荐标准和VML作为基础 用于创建图形。 这意味着您创建的每个图形对象 也是一个DOM对象,因此您可以附加JavaScript事件处理程序或 稍后修改它们。
假设sets
是一个图形对象(并且因为它包含路径,我认为它是),那么this
应该有一个parentElement
属性来访问。
如果它不起作用,您也可以尝试访问它:
var id = sets.id;
由于关闭而应该有效。