2016-12-08 2 views
1

мне нужен этот JavaScript для запуска при загрузке страницы:Зачем этот javascript заменяет этот код jQuery?

document.body.innerHTML = document.body.innerHTML.replace(/\} \}/g, '}}'); 

Мне также нужно это JQuery для запуска при загрузке страницы (обрабатывает мою врезку):

$('[data-toggle=offcanvas]').click(function() { 
    $('.row-offcanvas').toggleClass('active'); 
}); 

Это работает для боковая панель (помещается непосредственно перед </body>):

<script>$(document).ready(function() { 
    $('[data-toggle=offcanvas]').click(function() { 
    $('.row-offcanvas').toggleClass('active'); 
    }); 
});</script> 

Но если добавить регулярное выражение строку:

<script>$(document).ready(function() { 
    $('[data-toggle=offcanvas]').click(function() { 
    $('.row-offcanvas').toggleClass('active'); 
    }); 
    document.body.innerHTML = document.body.innerHTML.replace(/\} \}/g, '}}'); 
});</script> 

Регулярное выражение работает, но бит боковой панели перестает работать. Это потому, что я смешиваю Javascript и jQuery? Как я могу это исправить? Благодарю.

+2

Это чувствует, как [XY Проблема] (HTTP: //meta.stackexchange.com/a/66378). ** Почему ** вам нужно запустить это регулярное выражение? Это похоже на некоторые экранированные JSON или аналогичные, которые могут быть лучше обработаны по-другому .... –

+4

Нет, это потому, что вы заменяете содержимое своей страницы новым контентом. В новом контенте нет обработчиков событий. Это не лучший способ сделать то, что вы пытаетесь сделать. –

+4

«Это потому, что я смешиваю Javascript и jQuery?» jQuery * есть * javascript. –

ответ

0

Вы заменяете корпус документа, чтобы ваши привязки были потеряны.

$(document).ready(function() { 
    // change body 
    document.body.innerHTML = document.body.innerHTML.replace(/\} \}/g, '}}'); 
    // then bind to new body 
    $('[data-toggle=offcanvas]').click(function() { 
    $('.row-offcanvas').toggleClass('active'); 
    }); 

}); 
+0

Большое вам спасибо. Работает отлично. – Garry

0

Возможно уборщик метод, основанный на вашем уточняющий комментарий, что только двойные фигурные скобки, которые вы хотите заменить в элементах с классом my-content:

$('.my-content').text().replace(/\} \}/g, '}}'); 
Смежные вопросы