0

リストにあるdivをレンダリングした後、Anythingsliderをリロードしようとしています。

    <h:selectOneMenu id="dropdownDevice"
        value="#{skinningBean.currentDevice}" converter="SkinConverter">
        <f:selectItems value="#{skinningBean.myDevicesSI}" var="c"
            itemValue="#{c}" />
        <a4j:ajax event="change" render="preview" oncomplete="reloadSlider()" />

    </h:selectOneMenu>

注: プレビュー div は、slider1 リストの周りにあります

<script type="text/javascript">  
function reloadSlider() {  
    var $jq = jQuery.noConflict();
    $jq(function($){
      $jq('#slider1').anythingSlider();
    }); 
}  
</script>   

しかし、私はいつもこのエラーを受け取ります (私はこの解決策以上のものを試しました):

Error: TypeError: $jq(...).anythingSlider is not a function

この後、単純なリスト要素のみが表示されます。スライダーをリロードする方法はありますか?

編集:ドロップダウンメニューだけがレンダリング元のコンポーネントではないため、ページ全体をリロードしたくありません

これは私がanysliderを初期化する方法です:

<script src="../js/jquery.anythingslider.js"></script>
<link rel="stylesheet" href="../css/anythingslider.css" />

<script type="text/javascript">
var $jq = jQuery.noConflict();
$jq(function($){
  $jq('#slider1').anythingSlider();
}); 
</script>

コピーして関数でラップしただけなので、もう一度呼び出すことができます。

4

1 に答える 1

1

問題は、noConflict()モードが関数内で複数回呼び出されていることです。外側に移動します。

<script type="text/javascript">  
var $jq = jQuery.noConflict();
function reloadSlider() {  
    $jq(function($){
      $jq('#slider1').anythingSlider();
    }); 
}  
</script> 
于 2013-03-20T12:50:23.093 に答える