![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| artuska |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 5.5.2007 Репутация: нет Всего: нет |
Есть ХТМЛ-код:
Запускаем jQuery'евское событие clone(), чтобы клонировать этот код и создать такое же поле столько раз, сколько нажимаем на кнопку с плюсиком (здесь неполный код, только принцип):
Теперь я хочу задать кнопочке <button> событие onclick — например, onclick="alert('Button is clicked')". Пишу так:
Но событие не работает! Или события задаются иным путем, не через attr()? Например, если мне нужно задать аттрибут value для инпута, то я просто пишу attr('value', 'Какое-нить значение'); Точно так же пытаюсь задать и аттрибут onclick, но ничего не выходит. Сталкивался кто-нить с такой проблемой? Добавлено через 8 минут и 54 секунды Причем в ДОМ-эксплорере явно показано, что событие onclick этой нашей кнопочке благополучно задалось! ![]() Это сообщение отредактировал(а) artuska - 5.11.2008, 22:19 |
||||||
|
|||||||
| IDVsbruck |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 778 Регистрация: 12.11.2006 Репутация: 8 Всего: 22 |
А раз уж ты юзаешь jQuery, то почему не прочесть про события? - Там очень мощная реализация (и совершенно кроссбраузерная!). Для простых событий можно делать двумя способами (цитирую): 1. "click(fn) возвращает: jQuery Связывает функцию с событием click для всех элементов набора. Событие click наступает, когда кнопка указывающего устройства (например мышь) кликнута на элементе. Клик определяется как mousedown + mouseup в некотором месте экрана." 2. "bind(type, [data], fn) возвращает: jQuery Связывает обработчик с одним или более событиями (например click) для каждого элемента набора. Может также связывать пользовательские события. Возможные события: blur, focus, load, resize, scroll, unload, click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, error. Обработчик события принимает объект событие, что делает возможным предотвращение поведения по умолчанию. Чтобы предотвратить и поведение по умолчанию и "всплывание" события (т.е. передачу события от одного элемента другому), обработчик должен возвращать false." |
|||
|
||||
| artuska |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 5.5.2007 Репутация: нет Всего: нет |
Да, это элементарно!
Ошибок нет, но вот не работает тоже и все. Пробовал убирать Докюмент.рэди, пробовал не click, а each и bind пробовал, но не работает, хоть убей. jQuery просто не видит динамически созданные элементы, вот и все — не видит он эти <button>. Поэтому пытаюсь сразу при создании <button> повесить на нее событие, но не выходит. |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
$(document).ready
отрабатывает один раз после загрузки всей страницы. Если клонированные кнопки добавляются после этого, никто на них дополнительных кликов не поставит... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| artuska |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 5.5.2007 Репутация: нет Всего: нет |
||||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
А вт так
пойдет? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| artuska |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 5.5.2007 Репутация: нет Всего: нет |
Ура! Да, пойдет!
Минимально переделал и все работает:
Спасибо тебе, ksnk! Вопрос помечаю как решенный. Мдя, нету у меня 100 постов — но, всеравно, плюс тебе, ksnk. Это сообщение отредактировал(а) artuska - 7.11.2008, 04:01 |
|||
|
||||
| IDVsbruck |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 778 Регистрация: 12.11.2006 Репутация: 8 Всего: 22 |
Интересно, чем это можно объяснить?
|
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
artuska,
.removeAttr('id') Я там написал не от того, что у меня на клавиатуре лишние буквы . При клонировании ID тоже клонируется и после нескольких вставок можно запутаться в этих батонах с одинаковым именем. IDVsbruck clone.find('button').onclick=function... - добавит свойство onclick в объект jQuery. Оттого и не работало, наверное -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| artuska |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 5.5.2007 Репутация: нет Всего: нет |
Да-да, насчет айдишки знаю — одинаковые нельзя, но я уже перед тем, как задавать событие для <button>, делаю некоторые действия с клонированными полями, одно из них — инкрементирую айдишку (#id_2, #id_3, ... #id_n). Потом у меня все те кнопочки с минусами, при нажатии удаляют всю строку вместе с собой: |
|||
|
||||
| IDVsbruck |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 778 Регистрация: 12.11.2006 Репутация: 8 Всего: 22 |
||||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |