Обработка события у селектора, добавляемого с помощью append
Здравствуйте.
Имею следующий код: <form action=""> <fieldset> <p class="software"> <select name="what"> <option>Выберите название программы *</option> <option value='Программа 1'>Программа 1</option> <option value='Программа 2'>Программа 2</option> </select> <input type="text" name="reg_num" value="Регистрационный номер *" /> </p> <p class="add"><a href="#">Добавить программу</a></p> </fieldset> </form> function addSoftware() { $("p.software:first").clone(true).append(" <a class='del' href='#'>удалить</a>").insertBefore(this) } function delSoftware() { $(this).closest("p.software").remove() } $("p.add").click(addSoftware) $("a.del").click(delSoftware) Но обработка с помощью функции delSoftware почему-то не работает. Есть подозрение, что селектор a.del скрипт не видит. Так ли это и как можно выйти из ситуации? |
вы назначаете обработчик события на еще не существующие элементы
ставьте обработчик события на уже созданный объект, и все будет ок |
Цитата:
|
function addSoftware() { $("p.software:first").clone(true).append(" <a class='del' href='#'>удалить</a>").insertBefore(this) // вот тут надо найти ваш a и ему установить событие $("найденный a").click(delSoftware) } |
micscr, спасибо.
А еще небольшой вопрос. Сейчас у меня клонируется первый параграф с классом software. <p class="software"> <select name="what"> <option>Выберите название программы *</option> <option value='Программа 1'>Программа 1</option> <option value='Программа 2'>Программа 2</option> </select> <input type="text" name="reg_num" value="Регистрационный номер *" /> </p> Хотелось бы, чтобы клонировался этот параграф, но к name добавлялся уникальный номер, например, what1, what2, reg_num1, reg_num2 и т.п. Это с помощью jQuery возможно сделать? |
Цитата:
После клонирования поустанавливайте эти атрибуты name в нужные значения $('что-то').attr(name, 'what' + ind). ind самое простое - наращивайте при добавлении глобально и будет уникальным. |
micscr, что-то я по-моему тут наворочил…
function addSoftware() { var newObject = $("p.software:first").clone(true).append(" <a class='del' href=''>удалить</a>").insertBefore(this); jQuery.each(newObject, changeAttributes) $("a.del").click(delSoftware) return false } function changeAttributes(i){ $(newObject + "select").attr(name, 'what' + i) $(newObject + "input").attr(name, 'reg_num' + i) } Цитата:
var i = 0 function addSoftware() { var newObj = $("p.software:first").clone(true).append(" <a class='del' href=''>удалить</a>").insertBefore(this); i++ $(newObj + "select").attr(name, 'what' + i) $(newObj + "input").attr(name, 'reg_num' + i) $("a.del").click(delSoftware) return false } |
Подскажите пожалуйста, как верно написать…
|
newObj.find("select").attr(name, 'what' + i); |
micscr, благодарю. Только свойство name нужно указать в кавычках.
|
Часовой пояс GMT +3, время: 18:05. |