2016-07-02 6 views
1

私のコードは次のようになります。機能x()にパラメータを送信したい場合はどうすればいいですか?基本的に私は明白な理由から、クラス名.lobipanel-basicをハードコードしたくありません。無名関数にパラメータを送信する

ありがとうございました。

+1

通常通りに関数にパラメータを渡すことができます。また、あなたが持っているものはIIFEではないことに注意してください。 jQueryのイベントdocument.readyハンドラに無名関数を提供するだけです。 –

+0

*「明白な理由」*とは何ですか?これはXY問題のように聞こえますが、 – charlietfl

答えて

1

あなたが望むすべてがちょうど行うセレクタに渡すことで、プラグインを初期化することができる機能である場合は、次のオブジェクトで

function initPanel(selector){ 
    $(selector).lobiPanel({ 
     "state": "unpinned", 
     "resize": "both", 
     "reload": false, 
     "unpin": false, 
     "editTitle": false 
    }); 
} 

$(function(){ 
    initPanel('.lobipanel-basic'); 
}); 

またはストアオプションをとのようなものを実行します。

var panelOpts = { 
    "state": "unpinned", 
    "resize": "both", 
    "reload": false, 
    "unpin": false, 
    "editTitle": false 
}; 

$(function(){ 
    $('.lobipanel-basic').lobiPanel(panelOpts); 
}); 
+0

のように聞こえますが、できるだけ多くのインスタンスを呼び出すことができるように、 '' .lobipanel-basic''をパラメータとして呼び出し可能な関数が必要です。 –

+0

そして、ありますか? – charlietfl

+1

よく書かれたプラグインのほとんどは、それらの内部で 'each'を呼び出すので、そのクラスを持つすべての要素が影響を受けることに注意してください。それ以外の場合は、複数のインスタンスのために書かれていない場合は独自の 'each'を使用してください – charlietfl

0

@charlietflの助けを借りて、次のコードで解決できます。

function showPanel(panelClassName){ 
var panelOpts = { 
    "state": "unpinned", 
    "resize": "both", 
    "reload": false, 
    "unpin": false, 
    "editTitle": false 
}; 

$(function(){ 
    $(panelClassName).lobiPanel(panelOpts); 
    }); 
} 

showPanel('.lobipanel-basic'); 

@charlietflボタンをクリックするとパネルが表示されます。ボタンクリックでshowPanel機能を割り当てることができます。

ありがとうございました

+0

なぜ私はあなたに与えたものと重複して新しい答えを書くか?正しいことは、あなたがこれに手伝った答えを受け入れるだろう – charlietfl

+0

私は投稿した答えでクラス名を一般化しました。コードの80%はursです。 –

+1

クリックハンドラと 'generalized'でこれを使用する場合は' $(function(){'は必要ありません...あなたは変数名を変更したばかりですが、新しい回答を投稿するのに適切なエチケットはほとんどありません。他の回答からの% – charlietfl