2013-12-25 4 views
0

Я хочу использовать две версии jquery на одной странице, но как? Здесь я хочу использовать jquery-1.8.1.min.js "со скриптом ниже и jquery-1.3.2. min.j с другимиспользовать две версии jquery на одной странице

 <script src="jquery-1.3.2.min.js" type="text/javascript"></script> 
    <script type="text/javascript" src="jquery-1.8.1.min.js"></script> 
<script> 

$(document).ready (function(){ 

    $('.following').hover(function(){ 
     $(this).text("Unfollow"); 
    },function(){ 
     $(this).text("Following"); 
    }); 

    $('.following').click(function(){ 
    $(this).toggleClass('following follow').unbind("hover"); 
    if($(this).is('.follow')){ 
     $(this).text("Follow"); 
    } 
    else{ 

     $(this).bind({ 
      mouseleave:function(){$(this).text("Following");}, 
      mouseenter:function(){$(this).text("Unfollow");}  
     }); 
    } 
    }); 
}); 





</script> 
+6

Почему в мире хотите ли вы это сделать? – SquareCat

+0

Я спрашиваю, почему? – underscore

+0

Поддержка пространства имен в 1.2, как правило, является единственной причиной для этого – Zarathuztra

ответ

0

Я не рекомендую использовать noConflict(). это на самом деле не предназначены для такого рода вещи, если вы посмотрите на источник jQuery. Я рекомендую следующее:

<script src="jquery-1.3.2.min.js" type="text/javascript"></script> 
<script type="text/javascript">var jQueryOld = $old = jQuery</script> 
<script type="text/javascript" src="jquery-1.8.1.min.js"></script> 

источник JQuery для noConflict()

jQuery.noConflict = function(deep) { 
     if (window.$ === jQuery) { 
       window.$ = _$; 
     } 

     if (deep && window.jQuery === jQuery) { 
       window.jQuery = _jQuery; 
     } 

     return jQuery; 
}; 

В принципе вы все равно в конечном итоге с двумя объектами по имени JQuery когда все сказано и сделано. Кроме того, чтобы использовать это с jQuery, вы должны сказать jQuery.noConflict (true), и если вы читаете документы:

«Если по какой-то причине загружаются две версии jQuery (что не рекомендуется), вызывая $. noConflict (true) из второй версии вернет переменные jQuery с областью видимости в первую очередь. »

+0

ПРИМЕЧАНИЕ. Мое решение не может быть на 100% надежным, но это отправная точка. – Zarathuztra

1

Если возможно, вы должны переписать сценарии для использования той же версии jQuery. Код, который вы показываете, не очень сложный, и его можно легко переписать.

Во всяком случае, используя noConflict method, вы можете использовать две версии jQuery. Вам нужно будет поместить один из сценариев в область, где идентификатор $ ссылается на новую версию. По Вызову $.noClonflict(true) JQuery восстановит первую версию загруженной, и возвращает ссылку на вторую версию загруженной:

<script src="jquery-1.3.2.min.js" type="text/javascript"></script> 
<script src="jquery-1.8.1.min.js" type="text/javascript"></script> 

<script type="text/javascript"> 

(function($){ 
    // in here $ is the 1.8.1 version 

    $(document).ready (function(){ 

    $('.following').hover(function(){ 
     $(this).text("Unfollow"); 
    },function(){ 
     $(this).text("Following"); 
    }); 

    $('.following').click(function(){ 
     $(this).toggleClass('following follow').unbind("hover"); 
     if($(this).is('.follow')){ 
     $(this).text("Follow"); 
     } else{ 

     $(this).bind({ 
      mouseleave:function(){$(this).text("Following");}, 
      mouseenter:function(){$(this).text("Unfollow");}  
     }); 
     } 
    }); 
    }); 

}($.noConflict(true))); 

// from here on $ is the 1.3.2 version 

</script> 

Если вы хотите сохранить ссылку на вторую версию также:

<script src="jquery-1.3.2.min.js" type="text/javascript"></script> 
<script src="jquery-1.8.1.min.js" type="text/javascript"></script> 

<script type="text/javascript"> 

var $$ = $.noConflict(true); 

// from here on $ is the 1.3.2 version and $$ is the 1.8.1 version 

(function($){ 

    // in here $ is the 1.8.1 version 

}($$)); 

</script> 
+0

Гораздо лучшее решение, чем у меня :) Мне любопытно, что делает вторая версия в этом случае? – Zarathuztra

+0

@ Zarazthuztra: Я добавил комментарии в код, чтобы показать, какая версия используется где. – Guffa

+0

Спасибо, я вижу, что ты там делаешь. Не будет ли это поддерживать новую версию от использования здесь? Как только эта функция анонов выполняется, используется старая версия, поэтому возможно, что OP, возможно, потребуется вернуть новую версию. – Zarathuztra

Смежные вопросы