我有一个看起来有点像这样的方法:
function turnBlue()
{
$(this).css('background-color','blue');
}
function fillWithGoodies(obj)
{
var goodie_box = $("<div id='goodie_box'>Goodies! Click me and my parent will turn blue.</div>");
$(obj).append(goodie_box);
$(goodie_box).on('click', obj, turnBlue);
}
问题是当调用 turnBlue() 时,“this”是 goodie_box div,而不是 obj。(我想要对象)
JQuery 曾经有一个 .selector() 方法,但使用起来看起来并不安全。 http://api.jquery.com/selector/ 如果它有效,我会这样做:
$(goodie_box).on('click', $(obj).selector(), turnBlue);
有没有办法在不改变架构的情况下做到这一点?
注意:我知道我可以改为执行以下操作,但我这里的示例只是真实代码的一个子集。我的问题是:你能以某种方式获得一个对象的选择器吗?
// Don't want to have to do this:
$(obj).on('click', function() { doSomething(obj) } );
注意#2:调用 parent() 不是解决这个问题的方法:真实的代码创建了一个复杂的动态对象,并且父对象可以在任何深度。