[英]Issue with custom webpart multiple times on one page
我目前正在開發一個Webpart,它在其中的某些元素上運行帶有切換功能的jquery。 我的問題是,這個Webpart打算在同一Webpartpage上多次使用,我發現這給我帶來了很多麻煩,因為javascript將多次加載到該頁面上,以嘗試觸發同一元素上的函數。
我認為創建一些方法來更改此處和此處的不同值會很聰明,但最后我還是遇到了同樣的問題。
所以現在我沒主意了,我使用jquery和javascript的技能也很有限。 因此,任何幫助,示例,指針-使我更接近解決方案的任何事情,我將不勝感激。
jQuery腳本:
$(document).ready(function (){
$('.togglingDiv').find('dd').hide().end().find('dt').click(function() {
$(this).next().slideToggle("fast");
});
});
jQuery切換的HTML:
<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>
您可以讓Webparts使用ClientScriptManager加載javascript。 這樣的事情將只包含一次腳本:
ClientScriptManager scriptManager = this.Page.ClientScript;
if (!scriptManager.IsClientScriptIncludeRegistered("scriptName"))
scriptManager.RegisterClientScriptInclude("scriptName", "scriptUrl");
如果您不能使用外部文件,也可以使用.RegisterClientScriptBlock 。
在類似的情況下,我曾經用<dl id="togglingDiv" runat="server">
替換<dl class="togglingDiv">
<dl id="togglingDiv" runat="server">
。 當它具有“運行服務器”時,Asp.net會為“ togglingDiv”的每個實例生成一個不同的ID。
然后,將jQuery代碼放在ascx文件中,並使用ASP.Net的<%= .... %>
構造生成它:
$(document).ready(function (){
$('#<%=togglingDiv.ClientId%>').find('dd').hide().end().find('dt').click(function()
{
$(this).next().slideToggle("fast");
});
});
如果文件中包含JavaScript,則可以使用ScriptLink.Register方法。
ScriptLink封裝了ClientScriptManager調用以及其他功能。 請注意,如果name參數是相對路徑,則javascript文件必須位於12 \\ TEMPLATE \\ LAYOUTS \\ LCID目錄中(其中LCID是您的語言編號)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.