ddslick方法onSelected正在运行

ngp*_*und 6 jquery jsfiddle

我使用ddSlick插件为jQuery和方法onSelected应该只在我从创建的Dropdown中选择一个选项时运行.

唯一的问题是,我加载的以下代码似乎在页面加载后立即运行onSelected.

谁能指出我正确的方向?

$('#flag').ddslick({
    imagePosition:"left",
    background:"none",
    width:"66px",
    onSelected: function(data){
        var chosenCountry = data.selectedData.value;
        chosenCountry = chosenCountry.toLowerCase();
        if(data.selectedIndex > 0) {
            if( new_url[1] in oc(['de', 'es','fr','it']) ) {
                console.log("translated pages");
            }
        } else {
            console.log("English site");
        }
    }   
});
Run Code Online (Sandbox Code Playgroud)

的jsfiddle

谢谢

Ley*_*rio 12

经过数小时的研究,我发明了一个解决方案.

我直接在代码上改变了一些东西.

注意:您需要使用未经过说明的版本才能按照此说明操作.


在220行

找:

function selectIndex(obj, index) {
Run Code Online (Sandbox Code Playgroud)

将其更改为:

function selectIndex(obj, index, a) {
Run Code Online (Sandbox Code Playgroud)

第270行

找:

if (typeof settings.onSelected == 'function') {
   settings.onSelected.call(this, pluginData);
}
Run Code Online (Sandbox Code Playgroud)

将其更改为:

if (typeof settings.onSelected == 'function') {
    if (a !== true) settings.onSelected.call(this, pluginData);
}
Run Code Online (Sandbox Code Playgroud)

最后在第146行

selectIndex(obj, index)
Run Code Online (Sandbox Code Playgroud)

然后改为

selectIndex(obj, index, true)
Run Code Online (Sandbox Code Playgroud)

希望有所帮助!


Jef*_*den 7

这是肮脏和kludgey,但它的工作速战速决(用缩小的版本,并没有想转行了一小块我的代码).我刚刚定义了一个全局bool并在第一次加载时将其设置为true.

var _ddlLoaded = false;
$(function () {
    $('#ddl').ddslick({
            data: ddlData,
             onSelected: function (data) {
                if(_ddlLoaded  === false) {
                    _ddlLoaded = true;
                }
                else {
                    console.log(data.selectedData.value);
                }
    });
});
Run Code Online (Sandbox Code Playgroud)