2012-04-19 3 views
5

У меня есть javascript, который управляет скрытым div. Теперь он работает на большинстве страниц, но на других страницах с другими javascripts он не работает ... Я плохо написала js?

$(document).ready(function() { 
$("#user-dropdown-toggle").live ('click', function() { 
    $("#left-user-bar").addClass("open"); 
    $("#user-dropdown-toggle").addClass("league-judgement"); 
    $("body").addClass("league-judgement"); 
}); 
$(".league-judgement").live('click', function() { 
    $("#left-user-bar").removeClass("open"); 
    $("#user-dropdown-toggle").removeClass("league-judgement"); 
    $("body").removeClass("league-judgement"); 
}); 
}); 

Firefox сообщает следующее в консоли ошибок:

Отметка: 4/18/2012 9:08:21 PM Ошибка: $ ("# пользователя выпадающий-тумблер") равна нулю

ответ

9

$ функция в JQuery никогда не вернется null. Так что это, скорее всего, другое не-jQuery$ используется. (Используется ли там какой-либо ASP.NET материал или prototype.js или другие библиотеки? Функция пользовательской $ объявлена ​​позже?)

Я знаю, что $ сама неnull, потому что исключение будет отличаться, например, : «$ не является функцией». В этом случае браузер говорит результат выражение ($(...)) - null, что приводит меня к вышесказанному выводу.

Try:

$(document).ready(function($) { // <-- note $ there 
    ... 
}); 

Или, еще лучше, так как она опирается только на window.jQuery и не window.$:

jQuery(function($) { // <-- note $ there 
    ... 
}); 

И, если это работает, то, что $ в настоящее время затерт до того «готовое» событие (но после $(...).ready). Конечно, можно (но не очень вероятно), что $ является уже не JQuery в данный момент ...

Чтобы увидеть, если $ является JQuery (с помощью Web Developer Console или Firebug):

  • $ === jQuery обычно должен быть правдой, но это не может быть в зависимости от noConflict и такого
  • $.fn.jquery и $().jquery должен как результат в версии JQuery в виде строки
  • $ (просто указав функцию на консоли будет «показывать источник»)

Как и в сторону, я бы отступа тело функции (например, в «готовом» обратном вызове), чтобы увидеть, где он начинается/заканчивается более четко.

Счастливое кодирование.

+0

Спасибо за информацию. Я никогда не знал, что смогу сделать кое-что с Firebug. Яваскрипт, который вызывает мой разрыв, находится здесь: http://www.leaguejudgement.com/forum/public/min/index.php?ipbv=31005&g=js, и, как вы можете видеть, это много. Я не эксперт js, поэтому я могу попытаться найти более мелкий js-скрипт для преобразования bbcode в мою форму. – PaulELI

+1

@PaulELI Существует эта подозрительная вещь: 'function $ (element) {...}' в этом коде, которая переопределяет '$' (я думаю, что это в области 'window', но трудно сказать с минимизацией) и похоже, что это может быть связано с использованием библиотеки Prototype.js. В любом случае, подходит ли подход 'function ($)' к трюку? Если нет, использует ли 'jQuery', а не' $ 'исправляет проблему? Это должно быть совершенно «безопасным»: 'jQuery (function ($) {/ * original stuff, который использует $ * /})' и вообще невосприимчив к другим библиотекам. –

+1

Хорошо, я получил это, чтобы работать с тем, что вы сказали ... Я не понял ваш начальный пост хорошо и принимал его в другом направлении, но ваш оригинальный пост имеет большой смысл. Спасибо тонну, она исправила это. Это хорошо знать для будущих усилий js. Прототип или любая библиотека, используемая редактором Rich Text, кажется, является виновником еще нескольких проблем, поэтому я, вероятно, продолжу ее замену. – PaulELI

1

Первое, что я хотел бы проверить, это убедиться, что jQuery включен на все страницы. Я предполагаю, что это так, поскольку у него не было проблемы с битом $ (document) .ready, но вы никогда не знаете.

Взгляните на этот пост для получения дополнительной информации: jQuery $("#field") is null?

0

Вы должны добавить строку jquery script/include.

Также вы упоминаете «другое JS» на той же странице .. вы должны проверить, что он не загружает другую версию JQuery, чем тот, который вы используете, - переопределяя импортированную версию вашей библиотеки .....

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