使用bootstrap multiselect时,YUI不会触发

时间:2017-10-18 12:17:15

标签: javascript jquery twitter-bootstrap yui

我处于一个我必须在同一个项目中使用jQuery和YUI的位置。我正在使用Bootstrap multiselect - http://davidstutz.github.io/bootstrap-multiselect/

我正在尝试下面的YUI代码:

this.level1 = this.Y.one("#menu");
this.level1.on('change',this.getAjax,this);

现在,当下拉菜单未启用多项选择时,此功能正常。一旦完成,getAjax就不会被解雇。

有什么想法吗?我猜测(来自Google Inspect)实际菜单没有被更改?

当我尝试使用jQuery查看某些内容是否已更改时,我可以让它工作但在尝试运行getAjax时遇到错误()

$('#menu').on('change', function(evt, params){
    this.getAjax();
}

错误是

this.getAjax is not a function(…)

更大的代码片段

constructor: function() {

    $('#menu').on('change', function(evt, params){
        this.getAjax();
    });

},

/**
 * Sample widget method.
 */
methodName: function() {

},

/**
 * Makes an AJAX request for `default_ajax_endpoint`.
 */
 getAjax: function() {

所以我可以看看它是否通过jQuery发生了变化,但我怎么会调用getAjax

1 个答案:

答案 0 :(得分:1)

您无法从任何事件中访问此内容,因为时间“this”被引用到您的商品,因此您应该使用以下

constructor: function() {
var $this = this;
$('#menu').on('change', function(evt, params){
    //this.getAjax();//this is your '#menu' item
    $this.getAjax();
});

    },

    /**
     * Sample widget method.
     */
    methodName: function() {

    },

    /**
     * Makes an AJAX request for `default_ajax_endpoint`.
     */
     getAjax: function() {