私は自分のサイトのさまざまなビューでいくつかのjQueryプラグインを使用しています。場合によっては、プラグインは、document.readyを使用して、ページの読み込み時に外部のjavascript内で初期化されます。他の場合、初期化は別のプラグインのコールバックfn内で行われるか、またはajax呼び出しが部分的なビューを再ロードした後に行われます。ASP.NET MVCサイトでJavascriptスニペットを再利用
私は、同じプラグイン初期化スニペットをどのように/どこで初期化する必要があるかに応じて複数の場所にコピー貼り付けていることがわかりました。
ケース1:
は一例でこれを説明するために順番に expanderプラグインを使用しています qTipを使用する FullCalendar$(function() {
$('#calendar').fullCalendar({ // calendar
.. snip ..
eventRender: function (calEvent, element) { // render qtip on eventRender
element.qtip({
...snip...
events: {
....snip....
render: function() {// initialize expander on callback
// SNIPPET start
$('div.expandable').expander({
expandPrefix: '',
expandText: '[...]',
userCollapseText: '[less]',
preserveWords: true,
widow: 4
});
// SNIPPET end
}
}
ケース2:AJAXを介してロード部分図
$(document).ready(function() {
// SAME SNIPPET start
$('div.expandable').expander({
expandPrefix: '',
expandText: '[...]',
userCollapseText: '[less]',
preserveWords: true,
widow: 4
});
// SAME SNIPPET end
});
当然ながら、私はこのアプローチの大きなファンではなく、これに対処するより良い方法があるのだろうかと思っていました。私が探しているのは "部分的なビュー"のコンセプトだが、.NET MVC3 Razorサイト内のjavascriptのためだと思う。このアイデアは、$( 'div.expandable')スニペットを共通の場所に持ち、どこに必要なものが含まれているかを示します。
外部のjsファイルでも使用できるアイディアや提案はありますか?
ありがとうございます!
素晴らしい - 私はそれを試してみる - ありがとう! – seekay
申し訳ありませんが、私は銃を飛ばしました - あなたの答えは上ですが、jsは@JavascriptHelperビットを理解できないため、外部のjsファイルでは機能しません。 js専用の解決法があると思います(もしあれば) – seekay
外部のjsファイルはどういう意味ですか? jquery.expander.jsなどを含むように?通常、初期化のほかに、外部ライブラリに迷惑をかけないでください。 –