我使用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)
谢谢
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)
希望有所帮助!
这是肮脏和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)