Мне было интересно, знал ли кто-нибудь, почему у jQuery нет простого метода $().id()
. Кажется глупым, чтобы вытащить идентификатор, используя $().attr('id')
. Я бы подумал, что атрибут id является общим и достаточно полезным, чтобы иметь собственный вызов.
ответ
Другая проблема заключается в том, что jQuery возвращает согласованный набор, поэтому обычно у вас может быть несколько идентификаторов. Используя функцию Id, вы можете сломать цепочку, вернув идентификатор первого элемента в наборе.
Вы можете просто использовать $ ('selector'). Get (0) .id;
Зачем загромождать пространство имен с помощью суперплоских функций? Вы уже сказали, что attr()
может сделать то же самое только в нескольких дополнительных символах. Для каждой дополнительной функции он добавляет байты в размер файла и время для парсера JavaScript.
Я склонен согласиться. Добавление функции означало бы, что есть два разных способа сделать это, и я одобряю последовательность. –
каждый раз, когда мне приходится писать '$ ('. SomeSelector'). Attr ('id')' также занимает место. Почему у них есть 'size()', когда 'length' делает то же самое? Почему они имеют '$ ('div'). Contains ('text')' когда '$ ('div: contains (text)')' делает то же самое? – Jason
@Jason: Ну, '$ ('div, span: contains (text)')' и '$ ('div, span'). Содержит ('text')', очевидно, дает вам разные результаты. 'size()' может быть из-за исторических причин. Кстати, если это действительно вас беспокоит, просто напишите эту функцию самостоятельно;) –
Я думаю, что если вы действительно хотите и нуждаетесь в этой функции, чтобы сэкономить время, я бы просто добавил ее как новый метод. Что-то вдоль линий:
$.fn.extend({
id: function(){return this.attr('id');}
});
$('.test').id();
Но я отзовутся те же опасения, что Джеймс Westgate сказал, если у вас есть несколько возвращения в коллекции, вы должны убедиться, что вы справиться с этим правильно, иначе вы могли бы сломать вещи ,
спасибо за пример. я думаю, что это может быть полезно, когда вы ожидаете возвращения только одного элемента, но я вижу последствия, если это несколько. есть ли лучший способ получить идентификатор или есть .attr ('id') в значительной степени единственный способ? – Jason
Я считаю, что .attr ('id') - самый простой способ.Есть и другие способы, но я никогда не рекомендую. Если вы хотите убедиться, что это только когда-либо используется на одном возвращенном элементе, вы можете добавить в него чек. Я не слишком много играл с этим, я просто знаю, что он существует. – FallenRayne
- 1. Почему у объекта [ID] нет метода «Анимация»?
- 2. Почему нет идентификатора id?
- 3. Почему нет метода BigDecimal.setPrecision()?
- 4. Почему нет метода Monitor.EnterAsync
- 5. Почему нет метода сгиба?
- 6. Почему нет метода Service.onStop?
- 7. Почему у метода currentThread нет метода BODY?
- 8. Почему в объявлении этого метода нет *?
- 9. QGraphicsItem: Почему нет метода `stackAfter`?
- 10. Почему у моих ручек нет метода компиляции?
- 11. проблемы нет метода JQuery плагин
- 12. Почему консоль покажет мне, что у jquery нет метода «live»
- 13. Почему в Ruby нет метода глубокой копии?
- 14. Почему нет метода draw() в документации KineticJS?
- 15. Почему в IEnumerable нет метода расширения ForEach?
- 16. Почему в абстрактном классе нет абстрактного метода()?
- 17. Почему нет метода main() в android
- 18. Почему нет метода countOf в String Class?
- 19. Почему нет метода добавления в интерфейсе Итератора
- 20. Почему нет метода SelectToArray в System.Linq.Enumerable
- 21. Почему нет метода onSurfaceDestroyed в GLSurfaceView.Renderer?
- 22. Почему в .NET MVC нет метода Html.CheckBoxFor()?
- 23. Почему нет метода append() в Django ValuesListQuerySet?
- 24. Python: Почему в списках нет метода поиска?
- 25. Почему нет метода из шаблонного базового класса?
- 26. Проверьте, нет ли метода в плагине jQuery
- 27. Почему я получил ошибку «Нет метода»?
- 28. Почему у меня нет доступа к id в CSS?
- 29. как передать id серверу с метода jquery
- 30. Нет ответа от метода jQuery getJSON
ах, это хорошая причина. – Jason