2010-04-07 3 views
4

Мне было интересно, знал ли кто-нибудь, почему у jQuery нет простого метода $().id(). Кажется глупым, чтобы вытащить идентификатор, используя $().attr('id'). Я бы подумал, что атрибут id является общим и достаточно полезным, чтобы иметь собственный вызов.

ответ

7

Другая проблема заключается в том, что jQuery возвращает согласованный набор, поэтому обычно у вас может быть несколько идентификаторов. Используя функцию Id, вы можете сломать цепочку, вернув идентификатор первого элемента в наборе.

Вы можете просто использовать $ ('selector'). Get (0) .id;

+0

ах, это хорошая причина. – Jason

8

Зачем загромождать пространство имен с помощью суперплоских функций? Вы уже сказали, что attr() может сделать то же самое только в нескольких дополнительных символах. Для каждой дополнительной функции он добавляет байты в размер файла и время для парсера JavaScript.

+2

Я склонен согласиться. Добавление функции означало бы, что есть два разных способа сделать это, и я одобряю последовательность. –

+1

каждый раз, когда мне приходится писать '$ ('. SomeSelector'). Attr ('id')' также занимает место. Почему у них есть 'size()', когда 'length' делает то же самое? Почему они имеют '$ ('div'). Contains ('text')' когда '$ ('div: contains (text)')' делает то же самое? – Jason

+1

@Jason: Ну, '$ ('div, span: contains (text)')' и '$ ('div, span'). Содержит ('text')', очевидно, дает вам разные результаты. 'size()' может быть из-за исторических причин. Кстати, если это действительно вас беспокоит, просто напишите эту функцию самостоятельно;) –

1

Я думаю, что если вы действительно хотите и нуждаетесь в этой функции, чтобы сэкономить время, я бы просто добавил ее как новый метод. Что-то вдоль линий:

$.fn.extend({ 
    id: function(){return this.attr('id');} 
}); 
$('.test').id(); 

Но я отзовутся те же опасения, что Джеймс Westgate сказал, если у вас есть несколько возвращения в коллекции, вы должны убедиться, что вы справиться с этим правильно, иначе вы могли бы сломать вещи ,

+0

спасибо за пример. я думаю, что это может быть полезно, когда вы ожидаете возвращения только одного элемента, но я вижу последствия, если это несколько. есть ли лучший способ получить идентификатор или есть .attr ('id') в значительной степени единственный способ? – Jason

+0

Я считаю, что .attr ('id') - самый простой способ.Есть и другие способы, но я никогда не рекомендую. Если вы хотите убедиться, что это только когда-либо используется на одном возвращенном элементе, вы можете добавить в него чек. Я не слишком много играл с этим, я просто знаю, что он существует. – FallenRayne

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