0

jquery.noConflict は、php インクルードを使用して外部ファイルからロードするときに、何らかの理由で機能しませんか? また、一部のスクリプトも完全にロードされていないことに気付きましたか?


mainfile.php

<script type="text/javascript" src="js.jquery/jquery.1.8.2.min.js"></script>

<?
include 'extrn_file.php';
?>

// 終わり

//extrn_file.php

<script type="text/javascript" src="js.jquery/jquery.1.3.2.min.js"></script>
<script> $jq132 = jQuery.noConflict(true); </script>
<script type="text/javascript" src="js/animate.js"></script>

<script type="text/javascript">
execute_skills_doc();

function execute_skills_doc(){
$jq132(document).ready(function() {
alert("yes");//nothing happens
});

}

//終わり

4

1 に答える 1

1

jQuery同じページで の複数のバージョンを使用する場合はnoConflict()、最初のバージョンをロードしてから 2 番目のバージョンをロードする必要があります。PHP インクルードは 2 つのファイルの内容をまとめているだけなので、最終的には次のようになります。

<script type="text/javascript" src="js.jquery/jquery.1.8.2.min.js"></script>
<script type="text/javascript" src="js.jquery/jquery.1.3.2.min.js"></script>
<script> $jq132 = jQuery.noConflict(true); </script>

あなたが本当に欲しいものは次のとおりです:

<script type="text/javascript" src="js.jquery/jquery.1.8.2.min.js"></script>
<script type="text/javascript"> 
    // set version 1.8.2 to variable and remove globals
    $jq182 = jQuery.noConflict(true); 
</script>
<script type="text/javascript" src="js.jquery/jquery.1.3.2.min.js"></script>
<script type="text/javascript">
    // return jQuery version
    function getVersion(jq){
        return jq().jquery;
    }

    // set version 1.3.2 to variable and remove globals
    $jq132 = jQuery.noConflict(true); 
    // reset jQuery variable to 1.8.2
    jQuery = $jq182.noConflict();

    // your code that uses $ variable and jQuery 1.3.2
    (function($){
        $(document).ready(function(){ alert('Using $ v'+getVersion($)+'!'); });
    })($jq132);

    // your code that uses $ variable and jQuery 1.8.2
    (function($){
        $(document).ready(function(){ alert('Using $ v'+getVersion($)+'!'); });
    })($jq182);

    // your code that uses jQuery variable and jQuery 1.8.2
    jQuery(document).ready(function(){ alert('Using jQuery v'+getVersion(jQuery)+'!'); });

</script>​

この時点で、バージョンが変数と変数に1.8.2ロードされ、変数にロードされます。上記のコードは、使用されている変数とそれぞれのバージョンを警告します。ここで、Google API がホストするライブラリを使用した例を見ることができます: http://jsfiddle.net/2kX3E/$jq182jQuery1.3.2$jq132

于 2012-10-28T23:20:33.607 に答える