2017-01-22 4 views
0

Я пытаюсь сделать функцию jQuery (или даже Javascript) с помощью функции с помощью $("script").append(, но как только она будет сделана «страница» или «страница», doc "уже загружен и поэтому не видит его (функция не была там, когда она загружалась так на страницу, в которой она« не существует », даже если она создана и доступна для просмотра). чтобы перезагрузить <script> или «повторно document.ready» JQuery, чтобы страница знает, что сейчас существует.

Я знаю, что это процесс document.ready загрузки, потому что если я жесткий код функции он работает нормально (потому что она существует до страница загружается). Кто-то должен знать, как это сделать или как обойти это. Как вы используете $("script").append(?

Это пример того, что я пытаюсь сделать.

function makeFunction(array){ 
$("script").append("$(document).ready(function({$('#"+array+"').on('click', function(){$('#"+array+"').hide();});});"); 
} 

Эта функция вызывается внутри другой функции, которая проходит через цикл. Функция looping вызывается непосредственно после тега <script>. Таким образом (по моему мнению) он загружается с document.ready. Проблема в том, что тогда вновь созданные функции никогда не становятся «готовыми» по начальной загрузке document.ready (потому что еще раз они еще не существовали).

Так что я спрашиваю, есть ли способ обойти это, поэтому я могу иметь сингулярную функцию, чтобы написать мне много функций для меня.

Если мне не хватает какой-либо важной информации, пожалуйста, укажите, какой «контекст» необходим.

+0

Есть ли [любая причина] (http://meta.stackexchange.com/q/66377/147640), чтобы попытаться генерировать буквенный код javascript в документе вместо того, чтобы создавать функции как обычно и назначать их переменным? – GSerg

+0

Добро пожаловать в SO. Пожалуйста, посетите [помощь] и посмотрите, как и что спросить. СОВЕТ: усилие и код сообщения. Также в этом случае, пожалуйста, скажите, что вы пытаетесь сделать, чтобы не попасть в ловушку [XY-проблемы] (http://meta.stackexchange.com/questions/66377/what-is-the-xy -проблемы) – mplungjan

ответ

0

НИКТО [citation needed] успешно используется $("script").append() потому что, даже если это работало, как вы думаете, что не должно, не было бы необходимости делать это.

Functions are first class citizens в Javascript. Чтобы создать новую функцию во время выполнения, вам не нужно изменять исходный код страницы.

Затем обработчик jQuery ready выполняет переданную функцию, когда документ становится готовым, и если документ уже готов при регистрации другой функции, function will be called straight away.

Так что ваш излишне сложным и не рабочий код должен быть заменен:

function makeFunction(array) { 
    $(function() { 
     $("#"+array).on("click", function(){ $(this).hide(); }); 
    }); 
} 

Улучшение $(this) не нужно ответить на ваш вопрос, и вы можете продолжать использовать $("#"+array) вместо несмотря на то, что нет необходимости ,