2013-02-14 3 views
1

У меня вопрос appaently с Декларацией Jquery, что у меня есть на странице:Ошибка с JQuery Декларация

http://www.northernvirginiapaintingcontractor.com Нажмите кнопку «Paint» Фактов

Ошибка: «$ .fn» равно нулю или нет объект

Относится к этой линии:

$.fn.accordion = function() { 

Я использую это заявление на другой веб-сайт и работает отлично.

Но для этого сайта- это не работает нормально.

В отдельной странице на сайте: GeneralContact Jquery декларации устанавливается вверх, как это:

jQuery(document).ready(function ($) { 

У меня нет достаточно опыта JQuery для отладки это, если кто-то может увидеть проблему, Я буду очень признателен!

Оказывается, что этот скрипт ссылается $ в нескольких местах: moredetail_click() hidedetail_click() according_set()

Я не уверен, если есть работа вокруг для всего «$ «ссылки, или если я должен как-то переписать это?

 $.fn.accordion = function() { 
     return this.each(function() { 
      $container = $('#FactsLeftColumn'); 
      $container.find("dt").each(function() { 
       var $header = $(this); 
       var $selected = $header.next(); 

       $header.click(function() { 
        $('.active').removeClass('active'); 
        $(this).addClass('active'); 
        if ($selected.is(":visible")) { 
         $selected.animate({ 
          height: 0 
         }, { 
          duration: 300, 
          complete: function() { 
           $(this).hide(); 

           var id = $(this).attr("id"); 

           var num; 
           if (id.length < 3) { 
            num = id; 
           } else { 
            num = id.substring(2, id.length); 
           } 
           $('#hidden_' + num).hide(); 
           $('#more' + num).show(); 

          } 
         }); 
        } else { 
         $unselected = $container.find("dd:visible"); 
         $selected.show(); 
         var newHeight = heights[$selected.attr("id")]; 
         var oldHeight = heights[$unselected.attr("id")]; 

         $('<div>').animate({ 
          height: 1 
         }, { 
          duration: 300, 
          step: function (now) { 
           var stepSelectedHeight = Math.round(newHeight * now); 
           $selected.height(stepSelectedHeight); 
           $unselected.height(oldHeight + Math.round((newHeight - oldHeight) * now) - Math.round(newHeight * now)); 
           if ($unselected.attr("id") != null) { 
            var id = $unselected.attr("id"); 

            var num; 
            if (id.length < 3) { 
             num = id; 
            } else { 
             num = id.substring(2, id.length); 
            } 
            $('#hidden_' + num).hide(); 
            $('#more' + num).show(); 
           } 
          }, 
          complete: function() { 
           $unselected.hide().css({ 
            height: 0 
           }); 
          } 
         }); 
        } 
        return false; 
       }); 
      }); 

      var heights = new Object(); 

      $container.find("dd").each(function() { 
       $this = $(this); 
       $this.css("overflow", "hidden"); 
       heights[$this.attr("id")] = $this.height(); 

       $this.hide().css({ 
        height: 0 
       }); 
      }); 
     }); 
    }; 

    function moredetail_click(ddnum) { 
     $('#view_' + ddnum).hide(); 
     $('#hidden_' + ddnum).show(); 
     var newHeight = $('#hidden_' + ddnum).height() + 2; 
     if (ddnum < 5) { 
      $('#' + ddnum).height(newHeight); 
     } else { 
      $('#Dd' + ddnum).height(newHeight); 
     } 
    } 

    function hidedetail_click(ddnum) { 
     $('#hidden_' + ddnum).hide(); 
     $('#view_' + ddnum).show(); 

     var newHeight = $('#view_' + ddnum).height() + 1; 
     if (ddnum < 5) { 
      $('#' + ddnum).height(newHeight); 
     } else { 
      $('#Dd' + ddnum).height(newHeight); 
     } 
    } 

    function according_set() { 
     $("#FactsLeftColumn").accordion(); 
    } 

    $(document).ready(function() { 
     $("#featured > ul").tabs({ fx: { opacity: "toggle"} }).tabs("rotate", 5000, true); 

     var idnum = 1; 
     var ddnum = 1; 

     $.getJSON('FaqsJson.ashx?factType=1', function (datas) { 
      var str_one = ""; 
      str_one = "<dl>" 

      var array_len = datas.length; 
      var each_num = 1; 

      var answer = ""; 
      var split_str; 
      var len, i, start_pos; 

      $.each(datas, function() { 
       if (this['Answer'].length > 200) { 
        split_str = this['Answer'].split(". "); 
        len = split_str.length; 

        answer = "<div id='view_" + ddnum + "'>"; 
        if (split_str[0].length < 150) { 
         answer += split_str[0] + ". " + split_str[1] + ". <a href='javascript:;' id='more" + ddnum + "' onclick='moredetail_click(" + ddnum + ")' class='moredetail'>Read More</a>"; 
         start_pos = 2; 
        } 
        else { 
         answer += split_str[0] + ". <a href='javascript:;' id='more" + ddnum + "' class='moredetail' onclick='moredetail_click(" + ddnum + ")'>Read More</a>"; 
         start_pos = 1; 
        } 
        answer += "</div>"; 
        answer += "<div id='hidden_" + ddnum + "' style='display:none;width:534px;'>"; 
        answer += this['Answer']; 
        answer += " <a href='javascript:;' id='more" + ddnum + "' class='moredetail' onclick='hidedetail_click(" + ddnum + ")'>Read Less</a>"; 
        answer += "</div>"; 
       } 
       else { 
        answer = this['Answer']; 
       } 

       str_one += "<dt class=\"glossquestion\"><a href=\"javascript://\" class=\"questionLink\">" + this['Question'] + "</a></dt>"; 
       if (idnum < 5) 
        str_one += "<dd id=\"" + ddnum + "\" class=\"glossanswer\" style=\"right-margin:5px;width:544px;\"><div class=\"answerbox\" style=\"width:536px;\">" + answer + "</div></dd>"; 
       else 
        str_one += "<dd id=\"Dd" + ddnum + "\" class=\"glossanswer\" style=\"right-margin:5px;width:544px;\"><div class=\"answerbox\" style=\"width:536px;\">" + answer + "</div></dd>"; 
       idnum++; 
       ddnum++; 
       each_num++; 

       str_one += "</dl>"; 
      }); 

      $("#glossary_first").html(str_one); 

      window.setTimeout(according_set, 2000); 
     }); 
    }); 
+1

Правильно ли указан jQuery? Вы пытаетесь ссылаться на две версии, которые перехватывают друг друга? Еще одна структура, крадущая селектор «$»? Вам нужно немного больше информации о вашей настройке. – Taz

+0

Я считаю, что да - еще одна структура, крадущая селектор «$», у меня есть настройка JQuery-декларации по-разному для страницы GeneralContact (на которую я ссылался в Вопросе), но я не понимаю как включить в него «fn.accordian». – Paul

ответ

0

Вы можете попробовать этот формат так $ будет отделен от глобального объема и других библиотек не будут конфликтовать

jQuery.noConflict(); 
(function($){ 
    $.fn.accordion = function() { ... }; 
})(jQuery); 
+1

это абсолютно сработал- спасибо! – Paul

+0

Вы больше всего приветствуетесь :-) –

+0

К сожалению, этот скрипт ссылается на $ в нескольких других местах, я вставлю весь скрипт в вопрос. – Paul

0

При использовании JQuery с другими библиотеками использовать jQuery.noConflict(); методу для предотвращения конфликтов.

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