2011-01-06 9 views
1

現在、いくつかのjqueryをいくつかの要素のトグル機能で実行するwebpartの開発に取り組んでいます。私の問題は、このWebパーツは同じWebパーツページで数回使用することを意味しています。これは、Javascriptが複数のページにロードされて同じ要素の機能をトリガーしようとするので、私はコースに多くの問題を発見しました。カスタムWebパーツを1ページに複数回発行する

さまざまな値を変更するためのカップルメソッドを作成するのは賢明だと思っていましたが、結局同じ問題が発生しました。

これで私はアイデアがなくなり、jqueryとjavascriptのスキルは限られています。どのようなヘルプ、サンプル、ポインタでも、私はそれをソリューションにもっと近づけることができます。私はgreatefullになります。

jqueryのスクリプト:

$(document).ready(function(){ 
     $('.togglingDiv').find('dd').hide().end().find('dt').click(function() { 
      $(this).next().slideToggle("fast"); 
     }); 
}); 

HTML jQueryのトグルさ:

<dl class="togglingDiv"> 
    <dt>Lorem ipsum</dt> 
    <dd> 
     Lorem ipsum dolor sit amet, consectetur adipiscing elit.</dd> 
    <dt>Lorem ipsum</dt> 
    <dd> 
     Lorem ipsum dolor sit amet, consectetur adipiscing elit.</dd> 
    <dt>Lorem ipsum</dt> 
    <dd> 
     Lorem ipsum dolor sit amet, consectetur adipiscing elit.</dd> 
</dl> 

答えて

2

同様のシナリオでは、私は<dl id="togglingDiv" runat="server"><dl class="togglingDiv">を置き換えるために使用されます。 "runat server"があると、Asp.netは "togglingDiv"のインスタンスごとに異なるIDを生成します。

次に、ASCXファイルでjQueryのコードを入れて、ASP.Netの<%= .... %>構文を使用して、それを生成します。

$(document).ready(function(){  
$('#<%=togglingDiv.ClientId%>').find('dd').hide().end().find('dt').click(function() 
    {    
    $(this).next().slideToggle("fast"); 
    }); 
}); 
3

あなたは、あなたのWebパーツがClientScriptManagerでJavaScriptを読み込むことができます。

ClientScriptManager scriptManager = this.Page.ClientScript; 

if (!scriptManager.IsClientScriptIncludeRegistered("scriptName")) 
    scriptManager.RegisterClientScriptInclude("scriptName", "scriptUrl"); 

外部ファイルを使用できない場合にも.RegisterClientScriptBlockを使用することができます。このような何かは一度だけのスクリプトが含まれます。

1

ファイルにjavascriptがある場合は、ScriptLink.Registerメソッドを使用できます。

ScriptLinkはClientScriptManagerの呼び出しをカプセル化し、追加の機能を提供します。 nameパラメータが相対パスである場合、javascriptファイルは、12 \ TEMPLATE \ LAYOUTS \ LCIDディレクトリにある必要があります(LCIDは言語番号)。

関連する問題