Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > вызов функции в JQuery


Автор: anonym 31.1.2008, 10:42
Пытаюсь разобраться с этой библиотекой. Пока нашёл много примеров, где например всем элементам с таким-то тэгом приписывается обработчик события. А как сразу выполнить какой-то код, скажем, для всех div-ов вывести значения их id?

Автор: ksnk 31.1.2008, 11:54
anonym, Куда, интересно, вывести?
Код

result=[];
$('div').each(function(){result.push(this.id||'never-use-this-damn-id')})
alert(result);

Автор: bars80080 31.1.2008, 11:59
Код

var divel = document.getElementsByTagName('div');
for(i=0; i<divel.length; i++) {
alert(divel[i].id); }

Автор: anonym 31.1.2008, 12:00
ksnk, да, именно так я хотел, спасибо)
bars80080, тоже можно, но мне нужно было именно через JQuery

Автор: ksnk 31.1.2008, 12:02
bars80080, 
Цитата(anonym @  31.1.2008,  10:42 Найти цитируемый пост)
Пытаюсь разобраться с этой библиотекой

И еще, хотелось бы мне посмотреть, как ты будешь исполнять свой код на страничке с сотней дивов в FireFox'е ;-)

Автор: anonym 31.1.2008, 12:09
Ну, див это я так для примера просто взял) На самом деле я пытаюсь реализовать динамически добавляемые формы ввода (как на многих сайтах, типа жмёшь на плюсик, появляется ещё одна такая же). И для этого нужно получить все id-шникиш input-ов старой формы, чтобы для новой формы поставить другие id-шники.

Добавлено через 6 минут и 20 секунд
Вот кстати ещё вопрос. Всегда ли функция будет применяться к элементом в том же порядке, в котором они идут в документе?

Автор: ksnk 31.1.2008, 12:25
А зачем нужны ID-шники форме? Форме нужны имена (name) ...
Цитата(anonym @  31.1.2008,  12:09 Найти цитируемый пост)
Всегда ли функция будет применяться к элементом в том же порядке, в котором они идут в документе?

Вообще-то да, но закладываться на это не стоит. обычно такой заклад - признак не очень удачного планирования приложения... ;-)

Автор: anonym 31.1.2008, 12:36
Цитата(ksnk @  31.1.2008,  12:25 Найти цитируемый пост)
А зачем нужны ID-шники форме? Форме нужны имена (name) ...

ну, наверное ты прав... хотя это же почти одно и то же)

Автор: Dr.Zlo 31.1.2008, 12:55
Мне кажется уже если использовать jQuery, так использовать:

Код

$('div').each( function(){
alert($(this).attr('id'))
})


anonym, если нужно добавить к форме инпут, при этом чтоб не получилось 2х элементов с одинаковым id, тебе нужно что-то вроде этого: 

Код


$(input_obj).parent().append($(input_obj).clone().attr('id', $(input_obj).attr('id')+'_new'));



в input_obj должен лежать селект, который нужно клонировать

Автор: anonym 31.1.2008, 13:42
Dr.Zlo, да, достаточно элегантно. Но мне нужно чтобы например юзер нажал три раза на плюсик, потом одну форму удалил (например вторую), и чтобы после этого соответствующие поля в оставшихся формах были например name1, lastname1, name2, lastname2. То есть чтобы всегда были пронумерованы по порядку. Я думал сделать функцию, которя будет вызываться при добавлении или удалении, будет получать формы по порядку (?) и расставлять нужные id. Может и глупо и не надёжно, но по другому пока не придумал...

Автор: Dr.Zlo 31.1.2008, 15:13
anonym, в таком случае я бы на твоём месте продублировал бы основание имени инпута в его классе:

<input type="text" class="name" name="name1">

Именование можно реализовать таким способом:

Код

$(input_obj).parent().append($(input_obj).clone());
var class_name = $(input_obj).attr('class');
var i=0;
$('.'+class_name).each(function(){
    i++;
    $(this).attr('name', class_name+i)
})


Т.е. сначала добавляем клон данного селекта, потом перебираем все селекты с классом name и задаём им имена name1, name2, name3...

Автор: anonym 31.1.2008, 15:54
Dr.Zlo, ну да, логично. Я бы тоже так сделал. Просто тогда получается 
Цитата(ksnk @  31.1.2008,  12:25 Найти цитируемый пост)
признак не очень удачного планирования приложения... ;-)
 

Автор: Dr.Zlo 31.1.2008, 17:12
Возможно в данном случае можно обойтись без класса, придумать какой-нибудь свой атрибут onunymous_attr и туда запихивать основание названия, можно вообще обойтись без этого именовать инпуты name="name_1" потом с помощью split('_')[0] и других манипуляций переименовывать селекты, можно придумать ещё миллиард способов, всё зависит от вашего вероисповедания и взглядов на действительность smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)