Не уверен, как использовать функцию jQuery noconflict - PullRequest
5 голосов
/ 30 сентября 2010

Я работал над этим сайтом в течение последних двух недель, и до сих пор все работало нормально. У меня конфликтующие javascript и, хотя я знаю, какой метод использовать для решения проблемы (jquery noconflict), я понятия не имею, как его использовать!

В моем случае у меня есть:

  • выпадающее меню, которое использует прототип js и пользовательский js
  • и контактная форма, которая использует несколько файлов jquery для проверки и уведомления об ошибках

Корпус классический, отлично работает отдельно, но не вместе. Я прочитал банду веб-сайтов и большинство указывает на решение использования:

<script>

  jQuery.noConflict();

  // Use jQuery via jQuery(...)
  jQuery(document).ready(function(){
    jQuery("div").hide();
  });

  // Use Prototype with $(...), etc.
  $('someid').hide();

</script>

Я новичок в javascript, поэтому я не знаю, что делать с этим фрагментом.

Это мой заголовок:

    <script src="js/prototype.js"></script>
    <script src="js/drop-o-matic.js"></script>
    <script>

  jQuery.noConflict();

  // Use jQuery via jQuery(...)
  jQuery(document).ready(function(){
    jQuery("div").hide();
  });

  // Use Prototype with $(...), etc.
  $('someid').hide();

    </script> 

    <!--[if lt IE 9]>

 <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
 <![endif]-->

    <!-- <script src="http://code.jquery.com/jquery-latest.js"></script>
 <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js"></script>
 <script src="js/jquery.jigowatt.js"></script> -->


    <script>
    document.createElement("article");  
    document.createElement("footer");  
    document.createElement("header");  
    document.createElement("hgroup");  
    document.createElement("nav");
    document.createElement("aside");
    document.createElement("section");
    document.createElement("menu");
    document.createElement("hgroup");
 </script> 

У меня есть только прототип & drop-o-matic js, а js-файлы для формы комментируются (сразу после комментария IE).

Прототип & drop-o-matic предназначен для навигации по html5 (без идентификаторов, просто

        <nav>
            <ul>
                <li><a href="index.php" class="home">Home</a></li>
                ...
                ...
                ...
            </ul>
        </nav>

Что я должен сделать, чтобы скрипты работали вместе?

Спасибо за помощь.

Ответы [ 2 ]

9 голосов
/ 30 сентября 2010

Прежде всего, вы звоните jQuery.noConflict() еще до того, как включили библиотеку jQuery! Это определенно не будет работать. Вы должны включить тег сценария jQuery перед вызовом noConflict ...

<script src="js/prototype.js"></script>
<script src="js/drop-o-matic.js"></script>
<script src="http://code.jquery.com/jquery-latest.js"></script><!-- IMPORTANT -->
<script>
  jQuery.noConflict();
</script>

Вы также можете предоставить jQuery свой собственный псевдоним, если хотите ...

var $j = jQuery.noConflict();

$j(document).ready(function() {
  $j("div").hide();
});

Для получения дополнительной информации, пожалуйста, прочитайте документацию API относительно Использование jQuery с другими библиотеками

0 голосов
/ 30 сентября 2010

Одна хорошая вещь, которую вы можете попробовать с jQuery, это использовать:

$jq = jQuery.noConflict();

и затем вместо использования $ или jQuery исправьте ваш код с помощью

$jq("document").ready(function(){

// rest of your jQuery code inside;

});
...