我正在使用jQuery的ddSlick插件,只有当我从创建的下拉列表中选择了一个选项时,onSelected方法才应该运行。
唯一的问题是,我的以下代码似乎在页面加载后立即运行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");
}
}
});jsFiddle
谢谢
发布于 2012-11-07 18:20:26
我花了几个小时找出问题所在,然后发明了一个解决方案。
我直接在代码上修改了一些东西。
注意:您需要使用unminified version按照以下说明进行操作。
第220行上的
查找:
function selectIndex(obj, index) {将其更改为:
function selectIndex(obj, index, a) {线路270
查找:
if (typeof settings.onSelected == 'function') {
settings.onSelected.call(this, pluginData);
}将其更改为:
if (typeof settings.onSelected == 'function') {
if (a !== true) settings.onSelected.call(this, pluginData);
},最后在第146行上
发现
selectIndex(obj, index)然后将其更改为
selectIndex(obj, index, true)希望这能有所帮助!
发布于 2014-09-30 12:09:57
它是肮脏和杂乱无章的,但它可以快速修复(我使用的是精简版本,不想换成我的一小段代码)。我刚刚定义了一个全局bool,并在第一次加载时将其设置为true。
var _ddlLoaded = false;
$(function () {
$('#ddl').ddslick({
data: ddlData,
onSelected: function (data) {
if(_ddlLoaded === false) {
_ddlLoaded = true;
}
else {
console.log(data.selectedData.value);
}
});
});发布于 2012-11-21 22:06:14
你可以随时查看ddSlick Remablized,它修复了这个问题,并添加了一堆其他很酷的功能,如键盘,类,和禁用/启用支持!
或者你想自己做这件事,去函数
function selectIndex(obj, index) {
在函数的底部,你会发现
//选择时的回调函数if ( settings.onSelected ==‘==’){ settings.onSelected.call(this,pluginData);}
删除以下注释上方的剪切并粘贴该部分
//If set to display to full html, add html
然后将if语句更改为
if (typeof settings.onSelected == 'function' && ddSelected.text().length > 0) {
Prashant Chaudhary本人甚至在推特上发布了ddSlick Remablized!在这里查看https://twitter.com/chaudharyp/status/268045906442584064
https://stackoverflow.com/questions/13253054
复制相似问题