0

リンクがクリックされたときに外部ページをロードする数行の jQuery コードがあります。

$(document).ready(function() {  
    $(".link").click(function (e) {
    e.preventDefault();      
    var $urlToLoad = $(this).attr('href'); 

    $("#loadarea").load($urlToLoad, function(data){
        $("#loading").fadeIn('fast').fadeOut('fast');
        $("#loadarea").hide().fadeIn('slow');       
        return false;
        });
    });      


}); 

これはうまくいきます。ただし、このページに不可欠なこの 1 行の追加コードを追加すると、「$ は未定義です」というエラーが表示されます。

http://api.jquery.com/jQuery.noConflict/ですべての手法を試しましたが、競合を解決できません。

function goto(id, t){   
    $(".contentbox-wrapper").animate({"left": -($(id).position().left)}, 600);
    $('#slide a').removeClass('active');
    $(t).addClass('active');    
}

私は var jq=jQuery.noConflict(); を試しました。$ を置き換えますが、これでは問題は解決しません。

私は、この競合を解決するのに十分な jQuery を理解していないと思います。何が起こっているのかを説明して、これから学ぶことができる人に本当に感謝します。

まとめると、次のようになります。

<script>

 $(document).ready(function() { 
    $(".link").click(function (e) {
    e.preventDefault();      
    var $urlToLoad = $(this).attr('href'); 

    $("#loadarea").load($urlToLoad, function(data){
        $("#loading").fadeIn('fast').fadeOut('fast');
        $("#loadarea").hide().fadeIn('slow');       
        return false;
        });
    });      


}); 

function goto(id, t){   
    $(".contentbox-wrapper").animate({"left": -($(id).position().left)}, 600);
    $('#slide a').removeClass('active');
    $(t).addClass('active');    
}


</script>

次に、スクリプトを起動するインライン コードを 1 つ用意します。

(a class="active" href="#" onClick="goto('#kr', this); return false">テスト

奇妙なことは、エラーがあっても、2回目のクリックで起動することです。

///////////////////////////////////

競合/エラーは、インライン JavaScript を変換することで解決されました。

以下のHuangismに感謝します。

4

3 に答える 3

1

からアンカーを書き直すだけです

<a class="active" href="#" onClick="goto('#kr', this); return false">test</a>

<a class="active" href="#kr">test</a>

jquery の場合

$('.active').on('click', function() {
    var $this = $(this);        
    var id = $this.attr('href');
    $(".contentbox-wrapper").animate({"left": -($(id).position().left)}, 600);
    $('#slide a').removeClass('active');
    $this.addClass('active');
    return false;
});
于 2013-03-26T18:31:17.407 に答える
0
$(document).ready(function() {

});

次のように書き換える必要があります。

jQuery(function($) {

});

それはここであなたを助けるかもしれません。

于 2013-03-26T18:00:28.587 に答える
0

おそらく、js ファイルを含める順序に関係している可能性があります。jquery が最初に読み込まれたファイルであることを確認してください。

于 2013-03-26T18:01:41.430 に答える