2012-03-14 6 views
-4

У меня проблема. У меня есть веб-приложение с динамическим контентом (так URL в браузере всегда /index.php). Я хочу добавить в него некоторые скрипты, но они говорят об элементах, которые будут созданы, например, некоторые div. FireBug выдает мне ошибку, что элемент, например. $ ('# Div1") равна нулю. Когда я прилагаю эти сценарии в нагруженных представлений, они не работают, потому что Тэй нужно получить document.ready событие. Как сделать эти сценарии уволят?Сценарии JavaScript в динамическом контенте

+0

Вы можете показать код? – Dementic

+0

показать код или что-то конкретное, что помогло бы другим понять, что вы делаете – AD7six

ответ

1
$(function(){//shorthand for document.ready 
    $('#div1').on("click",function(){ 
    //do something 
    }); 
}); 

не делает работать для вас? Если вы используете более низкую версию JQuery 1,7- использовать .bind() вместо .on()

+0

Что не так с '$ (...). Click (function() {...})'? – gdoron

+0

' ' –

+0

, потому что, когда элементы недоступны в документе, и вы пытаетесь добавить к ним прослушиватель событий, элемент не может быть найден, и .click не работает для этого. –

1

Как вы привязки обработчиков событий? В случае, если вы с JQuery 1.7+ вы должны использовать .on('event',handler), которые должны работать на динамично (т. е. материал, который отсутствует на $(document).ready).

Более ранние версии JQuery поставить такую ​​же функциональность с помощью .live('event',handler);

См: http://api.jquery.com/on/ и http://api.jquery.com/live/

EDIT: Как добавил @gdoron, Jquery 1.4.2 также добавлена ​​возможность использовать .delegate(): http://api.jquery.com/delegate/ - Тем не менее, как и с .live() это должно считаться устаревшим с помощью jQuery 1.7+

+0

была функция' delegate' между 'on' и' live'! 'live' - это не тот парень с версии 1.4.4! – gdoron

+0

@ gdoron: Хорошо, я добавлю это. Никогда не использовал делегата, хотя ... – m90

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