这个问题是由于
this
. 在第一个示例中,它将是一个包含
.lm-fancy-select__option
. 在第二个示例中,它将是对保存
binds
财产。
我希望它是对点击事件的引用
.lm-fancy-select\选项
在这种情况下,您可以从提供给事件处理程序的参数中检索事件并调用
$.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
var obj = {
selectProduct: function(e) {
console.log($(this).text());
},
binds: function() {
$('#sfProductList').on('click', '.lm-fancy-select__option', this.selectProduct);
}
}
obj.binds();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="sfProductList">
<div class="lm-fancy-select__option">Foo</div>
<div class="lm-fancy-select__option">Bar</div>
</div>