2012-10-28 111 views
0

jquery.noConflict不工作由於某些原因從一個exernal文件加載使用PHP包括?還注意到,也許一些腳本還沒有完全加載?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 
}); 

} 

//結束

+0

包含兩個不同版本的jQuery將導致各種各樣的破壞! – adeneo

+0

爲什麼要首先加載2個jQuery? –

+0

試圖分叉一些代碼,它只適用於老版本的jQuery :( – fhonics

回答

1

如果要使用多個版本jQuery在同一個pag上e你必須在第一次加載第二個之前noConflict()。因爲你的PHP只包括拉兩個文件的內容放在一起,你與結束了:

<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版本加載變成$jq182jQuery變量,1.3.2變成$jq132變量。上面的代碼將提醒使用的變量和每個版本。您可以在這裏看到一個使用Google API託管庫的示例:http://jsfiddle.net/2kX3E/

+0

awesomeness!謝謝芽 – fhonics