2013-03-28 61 views
1

我想知道是否有人能告訴我是否有可能在一個html文件中運行多個版本的jquery?即如何在一個HTML中運行多個版本的Jquery

我有6個divs每個潛水包含一個不同的jquery插件。第一個插件運行在最新的jQuery上。第二個由舊版本等支持。

我試圖實現所有這些到一個HTML,但只要我實現腳本2底下,腳本1,然後#1不再工作,但#2。只要我在#2下面實施#3,那麼#3就會運作,上面的一切都會破裂。

有沒有具體的方法來做到這一點?我曾嘗試應用noConflict代碼,但隨後將其分配給的腳本停止工作。除非我做錯了。

我雖然有關於使用if語句來說,如果var =插件1被點擊,取消所有其他jquery,並只爲該特定的插件播放jQuery。等所有其他插件。但我不確定這是否會奏效。我也想過使用單獨的$(document).ready(){};對於每個插件,但再次不確定這是否會起作用。

有沒有人知道我能如何解決這個問題?在過去的3天裏,我一直在與這頭野獸作鬥爭,並且永遠不會成爲你的債務。

ps:我沒有提供任何代碼,因爲它只是這麼多,而且有點到處都有。我可以,如果你想我。

感謝


<!DOCTYPE html> 
<html> 
<head> 

<!-- jQuery --> 
<script src="jquery191.js"></script> 


<!-- easing --> 
<script src="js/jquery.easing.1.3.js"></script> 
<!-- liteAccordion js --> 
<script src="js/liteaccordion.jquery.js"></script> 
<script src="js/datepicker.js"></script> 
<script ></script> 
<script ></script> 
<script ></script> 
<script ></script> 

<!-- liteAccordion css --> 
<link href="css/liteaccordion.css" rel="stylesheet" /> 



<!-- liteAccordion js --> 
<script type="text/javascript"> 
    $(document).ready(function() { 

    $('#div1').liteAccordion({ 
       onTriggerSlide : function() { 
        this.find('figcaption').fadeOut(); 
       }, 
       onSlideAnimComplete : function() { 
        this.find('figcaption').fadeIn(); 
       }, 
       autoPlay : true, 
       pauseOnHover : true, 
       theme : 'stitch', 
       rounded : true, 
       enumerateSlides : true 
     }).find('figcaption:first').show(); 


<!-- date picker js -->  
     $('#trip input#leavedate, #trip input#returndate').datepicker({ dateFormat: 'D, M d, yy', showOn: 'button', buttonImage: 'calendar.gif', buttonImageOnly: true }); // format: Thurs, Jan 31, 2008, only show when the user clicks the calendar 



    }); 
    </script> 

    // datepicker 

    <link rel="stylesheet" href="ui.datepicker.css"/> 
    <style type="text/css"> 
    body { font-family: verdana, arial, sans-serif; color: white; font-size: 0.8em; } 
    #trip{ background-color: black; width: 500px;} 
    #trip fieldset { border-width: 1px; width: 470px; } 
    #trip .fields { padding: 25px; margin-bottom: 20px; } 
    #trip div { clear: both; } 
    #trip label { float: left; width: 165px; } 
    #trip input { float: left; width: 200px; } 
    #trip .ui-datepicker-trigger { float: left; width: 16px; } 
    </style> 

    // datepicker 

<script src="jq.js"></script> 
<script type="text/javascript"> 
    var jQuery_1_2_6 = $.noConflict(true); 
    </script> 

<script language="JavaScript" src="jq.date.js"></script> 
<script language="JavaScript"> 

</script> 

// Style switch 

<link rel="stylesheet" type="text/css" href="styles1.css" title="styles1" media="screen" /> 
<link rel="alternate stylesheet" type="text/css" href="styles2.css" title="styles2" media="screen" /> 
<link rel="alternate stylesheet" type="text/css" href="styles3.css" title="styles3" media="screen" /> 




<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript" src="styleswitch.js"></script> 
<script src="/mint/?js" type="text/javascript"></script> 




</head> 
<body> 
    <div id="div1"> 
      <ol> 
       <li> 
        <h2><span>Slide One</span></h2> 
        <div><p><img src="img-one/1.jpg">HELLO HELLOHELLOHELLOHELLO</p></div> 
       </li> 
       <li> 
        <h2><span>Slide Two</span></h2> 
        <div></div> 
       </li> 
       <li> 
        <h2><span>Slide Three</span></h2> 
        <div></div> 
       </li> 
       <li> 
        <h2><span>Slide Four</span></h2> 
        <div></div> 
       </li> 
       <li> 
        <h2><span>Slide Five</span></h2> 
        <div></div> 
       </li> 
      </ol> 
      <noscript> 
       <p>Please enable JavaScript to get the full experience.</p> 
      </noscript> 
    </div> 

    <br><br> 
    <!-- Date Picker --> 
    <div id="div2"> 
     <form id="trip" action="#" > 
      <fieldset> 
       <legend>Trip Length</legend> 
        <div class="fields"> 
         <div><label for="leavedate">Departure Date:</label> <input type="text" id="leavedate" name="leavedate"/></div> 
         <div><label for="returndate">Return Date:</label> <input type="text" id="returndate" name="returndate"/></div> 
        </div> 

      </fieldset> 

     </form> 
    </div> 
    <br><br><br><br> 

    <!-- Style Switcher --> 
    <div> 
    <h1>Stylesheet switcher using jQuery</h1> 
     <p>This is a simple example of my stylesheet switcher which is very simple thanks to the power of <a href="http://www.jquery.com/">jQuery</a>.</p> 
     <p><strong>Update 25/08/2006:</strong> Updated to work with persistant stylesheets and new version of jQuery (r226 from SVN) [thanks Andrea]</p> 
     <p><strong>Update 20/08/2006:</strong> Updated to work with new version of jQuery (r200 from SVN) ["*=style" replaced with "=*style*"]</p> 
     <p> 
      Currently active stylesheet: 
      <span id="st1">styles1</span> 
      <span id="st2">styles2</span> 
      <span id="st3">styles3</span> 
     </p> 
     <p>Choose a different stylesheet:</p> 
     <ul> 
      <li><a href="serversideSwitch.html?style=style1" rel="styles1" class="styleswitch">styles1</a></li> 
      <li><a href="serversideSwitch.html?style=style2" rel="styles2" class="styleswitch">styles2</a></li> 
      <li><a href="serversideSwitch.html?style=style3" rel="styles3" class="styleswitch">styles3</a></li> 

     </ul> 
     <p>Please view source to see how it works or see the <a href="http://www.kelvinluck.com/article/switch-stylesheets-with-jquery">full article</a> about this script for more information. You can download the relevant Javascript here: <a href="styleswitch.js">styleswitch.js</a>, <a href="jquery.js">jquery.js</a></p> 


    </div> 

    <!-- FOUR --> 

    <div> 



    </div> 






</body> 
</html> 
+0

你不能。你只能有一個版本的jquery。如果你想向一些插件提供後向支持,那麼使用jquery migrate插件。 – SachinGutte

+0

'noConflict'正是爲了這個目的。您應該包含您嘗試過的代碼無效。 –

+0

例如,真的沒有辦法在相同版本的jquery(1.7)中找到這些插件?你使用哪些插件? – mlwacosmos

回答

1

它應該是非常簡單的:

<script type='text/javascript' src='js/jquery.1.0.0.js'></script> 
<script type='text/jvascript'> 
    var $jq1 = jQuery.noConflict(); 
</script> 


<script type='text/javascript' src='js/jquery.2.0.0.js'></script> 
<script type='text/jvascript'> 
    var $jq2 = jQuery.noConflict(); 
</script> 


<script type='text/javascript' src='js/jquery.3.0.0.js'></script> 
<script type='text/jvascript'> 
    $(document).ready(function() { 
    console.log('constructed with jQuery 3.0.0'); 
    }); 
</script> 

但你必須確保合適的劇本是在正確的範圍內,usualy你做這樣的事情:

$('#id').plugin(); 

這必須是,例如:

$jq1('#id').plugin(); 
+0

Hi Pendo,謝謝你的回答。我不明白你的代碼。你能幫我解釋一下嗎? 如果這有幫助,我還包括我的HTML文件中的代碼。 謝謝! – tidydee

+0

好吧,這個想法很簡單。 '$ jq2 = jQuery。noConflict();'創建一個變量來代替jQuery默認的'$'方法。根據示例,通過使用'$ jq2',您可以使用版本2.0.0執行您的代碼。 –

+0

謝謝!我會試試這個,讓你知道它是如何去的。 – tidydee

0

Here is an example of changing the jQuery namespace。您可以讓舊版本在不同的命名空間上運行,以避免衝突和混淆。

+0

我在原始文章中包含了破損的文件。我也會嘗試將插件包含在單獨的HTML文件中。所以你可以看到他們是如何工作的。讓我知道如果你需要我加入任何其他的js/css文件。感謝您的幫助!你們都很棒! – tidydee

相關問題