На каждой странице моего сайта есть другой набор эффектов jQuery, а также формы, которые передаются с использованием ajax. Я столкнулся с проблемой, когда пустой селектор jQuery предотвращает запуск остальной части javascript. Пример:Пустые селектора jQuery, нарушающие остальную часть скрипта
// site.js
$(document).ready(function() {
function changeText() {
$("#div1").html("Test 1");
$("#div2").html("Test 2");
}
$("#button1").click(changeText());
$("#button2").click(changeText());
});
// page1.html
<script src="/static/jquery.js"></script>
<script src="/static/site.js"></script>
<div id="div1">Div 1</div>
<input type="button" value="Change" id="button1"> <!-- Works //-->
// page2.html
<script src="/static/jquery.js"></script>
<script src="/static/site.js"></script>
<div id="div2">Div 2</div>
<input type="button" value="Change" id="button2"> <!-- Doesn't work //-->
Мое решение до сих пор было создавать отдельные файлы JavaScript для каждой страницы, но должен быть другой путь. Есть идеи? Мне действительно нужно обернуть каждый селектор в вызове if $("selector").length
, чтобы скрипт не сломался?
Спасибо за подтверждение того, что jQuery делает это автоматически. Оказывается, проблема заключалась в вызове 'document.getElementById()', который разбивал все. Я переключил это на вызов jQuery, и все в порядке. Благодаря! –