我试图将click事件绑定到动态创建的元素上,该元素通常可以正常工作,但是当我将cout << "i: " << 123 << endl;
放入混音中时,它将不再起作用。我可以使$.proxy
分开工作,也可以使动态元素的点击事件也分开工作,但是当我尝试将它们组合在一起以完成我需要的操作时,它将无法工作。为什么会这样?
$.proxy
也尝试过
selectProduct: function(){
console.log("hello");
},
binds: function() {
// When user selects a product
$('#sfProductList').on('click', '.lm-fancy-select__option', function(){
$.proxy(this.selectProduct, this);
});
}
如果该元素不是动态创建的,那么它将起作用:
binds: function() {
// When user selects a product
$('#sfProductList').on('click', '.lm-fancy-select__option', $.proxy(this.selectProduct, this));
}
答案 0 :(得分:2)
该问题归因于pip install -e file:///[path to the checkout]#egg=[name for the egg]
的范围。在第一个示例中,它将是一个包含pip install -e file:///home/john/site/apps/testapp-test#egg=test
的Element对象。在第二个示例中,它将是对拥有this
属性的对象的引用。
我希望它是对
.lm-fancy-select__option
的点击事件的引用
在这种情况下,您可以从提供给事件处理程序的参数中检索事件,并使用该作用域调用binds
:
.lm-fancy-select__option
但是必须注意,这完全没有意义。您可以通过仅向事件处理程序提供$.proxy
的引用来简化此逻辑:
binds: function() {
var _this = this; // get reference to parent object
$('#sfProductList').on('click', '.lm-fancy-select__option', function(e) {
$.proxy(_this.selectProduct, e);
});
}
现在,selectPoduct
调用的范围将是元素本身,并且该事件可通过提供的第一个参数用于该函数。
binds: function() {
$('#sfProductList').on('click', '.lm-fancy-select__option', this.selectProduct);
}
selectProduct