2014-03-12 123 views
0

我在頁面上有以下JQuery。JQuery適用於頁面加載,但不適用於

$("." + clazz).on("mousedown", function() { 
    $(this).removeClass(clazz); 
    $(this).addClass(clazzPressed); 
}); 
$("." + clazz).on("mouseup", function() { 
    $(this).removeClass("clazzPressed"); 
    $(this).addClass("clazz"); 
    setCookie('cmpaid',$(this).attr('id'),1); 
    divClickAction(); 
}); 

這對我來說工作得很好。但是,我使用一些AJAX並更新頁面上的某些內容。更新發生後,此代碼不再有效。

我懷疑它只能在頁面加載時調用它。一旦我更新我的頁面,新的東西不知道它。有沒有更新新的東西來擁有這個JQuery代碼的方法?

如果它的事項,這是被通過Ajax更新代碼:

<h:panelGroup id="urlList" > 
       <script src="/resources/scripts/divClick.js"/> 
      <script src="/resources/scripts/cookie.js"/> 
       <ui:repeat id="urlRepeater" value="#{uRLManagerManagedBean.urls}" var="url" > 
        <div id="#{url.id_value.toString()}" class="divClick" style="margin-bottom: 10px;margin-left: 15px;">    
         <div style="float:right;"> 
          <p:outputLabel value="#{url.category.category}" /><br/> 
          <p:outputLabel value="Embedded" rendered="#{url.isEmbedded}"/> 
         </div> 
         <p:graphicImage value="#{streamedContentManagedBean.image}" styleClass="urlImageSize" style="float: left;min-width: 25px;"> 
          <f:param name="id" value="#{url.image.idAsString}" /> 
         </p:graphicImage> 
         <h:panelGrid columns="1" > 
          <p:outputLabel value="#{url.name}" /> 
          <p:outputLabel value="#{url.url}" rendered="#{not url.isEmbedded}" /> 
          <p:outputLabel value="#{url.embed.url}" rendered="#{url.isEmbedded}" /> 
          <p:outputLabel value="#{url.type.toString(url.type)}" /> 
          <h:outputText value="#{url.description}" escape="false"/> 
         </h:panelGrid> 
        </div> 
       </ui:repeat> 

       <h:panelGroup layout="block" class="cardBody" style="margin-bottom: 10px;margin-left: 15px;padding:10px 10px 10px 10px;" rendered="#{empty uRLManagerManagedBean.urls}" > 
        <h:outputLabel value="No Urls" style="font-size: 25px;color: white;"/> 
       </h:panelGroup> 
      </h:panelGroup> 

這是JSF,並得到一些代碼後進行更新。但是這個問題應該是獨立的。

+0

你可以包含jQuery腳本不起作用的頁面源代碼嗎?或者這個腳本在/resources/scripts/divClick.js和/resources/scripts/cookie.js裏面? – trims

回答

1

將您的JavaScript代碼放入函數中,然後在頁面加載時調用該函數。

那麼對於preRenderView事件頁面上註冊一個監聽器:

<f:metadata> 
    <f:event type="preRenderView" listener="#{backingBean.preRenderViewListener}"/> 
</f:metadata> 

在監聽方法:

public void preRenderViewListener() 
{ 
    RequestContext.getCurrentInstance().execute("someJavaScriptFunction()"); 
} 

中的JavaScript將每個Ajax請求之後再次調用。

+0

真棒,讓我試試這個 – dan

相關問題