6

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");
        }
    }   
});

jsフィドル

ありがとう

4

4 に答える 4

12

私は、何が問題なのかを何時間も把握した後、解決策を発明しました。

コードの何かを直接変更します。

注:この手順に従うには、縮小されていないバージョンを使用する必要があります。


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)

それが役立つことを願っています!

于 2012-11-07T10:20:26.283 に答える
7

それは汚くて不器用ですが、簡単な修正でうまくいきました(縮小版を使用していて、コードの小さな部分に切り替えたくありませんでした)。グローバル bool を定義し、最初のロードでそれを true に設定しました。

var _ddlLoaded = false;
$(function () {
    $('#ddl').ddslick({
            data: ddlData,
             onSelected: function (data) {
                if(_ddlLoaded  === false) {
                    _ddlLoaded = true;
                }
                else {
                    console.log(data.selectedData.value);
                }
    });
});
于 2014-09-30T04:09:56.970 に答える
4

いつでもddSlick Remablizedをチェックできます。この問題を修正し、キーボード、クラス、サポートの無効化/有効化などの他のクールな機能を追加します!

または、これを実行したい場合は、自分で関数に移動します

function selectIndex(obj, index) {

関数の一番下にあるよりも

//Callback function on selection
if (typeof settings.onSelected == 'function') {
        settings.onSelected.call(this, pluginData);
}

次のコメントの上のそのセクションをカットアンドペーストして削除します

//If set to display to full html, add html

if ステートメントを次のように変更します。

if (typeof settings.onSelected == 'function' && ddSelected.text().length > 0) {

ddSlick Remablized は、Prashant Chaudhary 自身によってもツイートされています。ここでチェックしてくださいhttps://twitter.com/chaudharyp/status/268045906442584064

于 2012-11-21T14:06:13.987 に答える