знатокам jQuery

Духовность™

Продвинутый новичок
PHP:
$j('#js').prepend('<div id="order" style="display:none"></div>')
как *красиво* написать код, который откроет div#order ?

сейчас так делаю:

PHP:
$j('#js').prepend('<div id="order"></div>').find('#order').show('slow');
т.е. два раза повторяю имя #order

т.е. хочется банальную цепочку вызовов->->->
 

Adelf

Administrator
Команда форума
ну я бы не сказал что всегда красиво в одну строку писать.

Ты можешь попробовать чтото вроде этого:
PHP:
jQuery('<div id="order"></div>').prependTo(jQuery('#js')).show('slow');
 

~WR~

Новичок
PHP:
$('<div>').attr('id', 'order').hide().prependTo('#js').show('slow');
Добавлено: Ах, уже ответили выше.
 

RoLex

Новичок
если ты потом с этим объектом хочешь еще что-то делать, кроме как show(), то лучше поэтапно сделать:
1. создать этот объект (занести в переменную)
2. добавить куда тебе нужно.
3. открыть

или же, цепочку вызовов можно писать не в одну строку, я имею ввиду, переносы делать, чтобы код наглядный был.
то есть
PHP:
var $order = $('#js')
.prepend('<div id="order"></div>')
.find('#order')
.show('slow');
и рекомендуется создаваемые переменные, которые будут содержать объект JQ, именовать с префиксом $, чтобы потом сразу понимать - что там jQuery объект. да и другим разработчикам будет проще потом разбираться.

PS. кстати, а не пробовал так
PHP:
var $order = $('#js')
.prepend('<div id="order"></div>')
.show('slow');
:) это к вопросу о том, что ты два раза "order" пишешь.
или, как написал в самом начале
PHP:
var $order = $('<div id="order"></div>');
$('#js').prepend($order);
$order.show('slow');
 

Духовность™

Продвинутый новичок
Пасибо всем, посмотрю.

Скажите, а как лучше писать - каждый раз инстанцировать объект $j('#id') когда мне надо с этим элементом работать или присваивать его в переменную и ею пользоваться? Кэш объектов какой-то используется в jQuery?
 

Adelf

Administrator
Команда форума
Духовность™
если у тебя нет каких-то длинных циклов - по барабану. если есть - лучше в переменную записать в начале.
А так это лишь вопрос красоты. Если у тебя большой класс, в котором ты все городишь.. то можно этот объект и записать. Даже не в целях оптимизации, а просто на случай например изменения селектора '#id' на что-нибудь другое.
jQuery не кеширует, но селекторы типа '#id' отрабатывают очень быстро.
З.Ы. Не оптимизуй заранее.
 

~WR~

Новичок
Правильнее - присваивать в переменную. Но, в случае с выборкой по id, разница минимальна.
Переменные дают заметное преимущество только при использовании "тяжелых" селекторов.
 

Духовность™

Продвинутый новичок
скажите, ка киз объекта jQuery получить доступ к свойствам и методам DOM объекта? типа
PHP:
$j('#js_order').tagName
 

Духовность™

Продвинутый новичок

~WR~

Новичок
Примерно так.
PHP:
$j('#js_order').get(0).tagName
Только зачем это? Сколько лет копаюсь с jQuery, всего пару раз потребовалось получить базовый DOM-объект.
 

fixxxer

К.О.
Партнер клуба
А нахрена тебе dom-объект? Ну или если они нужны - нахрена jquery? Если от jquery нужны только селекторы, в современных браузерах они и так работают.

А так - как раз в мане и надо смотреть, вот на той странице справа, там где Attributes и т.д.
 

~WR~

Новичок
Получить значение select'а (в т.ч. multiple):
PHP:
$j('#js_order').val();
Получить выбранный option:
PHP:
$j('#js_order').find('option:selected');
Получить индекс выбранного option (хотя с трудом представляю, зачем это нужно, если есть val):
PHP:
$j('#js_order').find('option:selected').index();
 
Сверху