2013-05-15 2 views
0

У меня есть приложение, которое использует AJAX и формирует в модальном окне (Fancybox), чтобы предоставить средство редактирования для данных пользователей.Событие, не привязанное к загруженному содержимому в fancybox

У меня есть форма, установленная в отдельном файл - edit.php:

<form action="services/update/7" method="post" id="update-form"> 
    <label>Update the name of this upload</label> 
    <input type="text" name="dataname" value="Test Data" /> 
    <label>Select the theme of this upload</label> 
    <select> 
    <option value="All">All Themes</option> 
    <option value="1">Example Theme 1</option> 
    <option value="2">Example Theme 2</option> 
    <option value="3">Example Theme 3</option> 
    </select> 
    <input type="submit" name="submit" value="Save Changes" /> 
</form> 

У меня есть главная страница со ссылкой:

<a href="services/edit/7" id="edit-data">Edit</a> 

Я использую JQuery, чтобы связать события к элементы:

$("#edit-data").on("click", function(event)) 
{ 
    $.fancybox({ 
    'type': 'ajax', 
    'content': $(this).attr('href') 
    }); 
    event.preventDefault ? event.preventDefault() : event.returnValue = false; 
}); 

у меня есть окончательное связывание на кнопку отправки в виде:

$("#update-form input[type='submit']").on("click", function(event)) 
{ 
    alert("clicked"); 
    event.preventDefault ? event.preventDefault() : event.returnValue = false; 
}); 

Я добавил простое окно предупреждения к окончательному событию клика для тестирования, но оно никогда не запускается.

Любые мысли?

Благодаря

делегация

ответ

3

Использование событий с .on()

$(document).on("click","#update-form input[type='submit']", function(event)){ 
    alert("clicked"); 
    event.preventDefault ? event.preventDefault() : event.returnValue = false; 
}); 

http://api.jquery.com/on/

+0

Отлично, спасибо большое. (Я не могу принять ответ еще, поскольку правила Stackoverflow останавливают меня, но я буду делать через 7 минут). –

+0

Без проблем .... приветствую .. ':)' –

2

Похоже, вы должны использовать делегирование, не уверен, как я не полностью понимаю ваш код:

$(document).on("click", "#update-form input[type='submit']", function(event)) 
{ 
    alert("clicked"); 
    event.preventDefault ? event.preventDefault() : event.returnValue = false; 
}); 
+0

Это блестящая благодарность. @pXL победил вас на 3 секунды, но был увеличен. –

+0

"pXL избили вас на 3 секунды" :) –

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