Для меня одной из лучшей, все же недостаточно использованной функции jQuery является пользовательский селектор. У меня есть довольно тривиальный пример этого, для выбирания всех текстовых полей, которые пусты:
$(document).ready(function() {
$.extend($.expr[':'], {
textboxEmpty: function(el) {
var $el = $(el);
return ($el.val() == "") && ($el.attr("type") == "text");
}
});
});
И звонить:
alert($(":textboxEmpty").length);
Я задавался вопросом, действительно, если у кого-либо еще были некоторые полезные примеры пользовательских селекторов, они записали.
Я являюсь, конечно, не слепым к ловушкам их и понимаю, что они могут быть довольно медленными и, как таковыми, должен быть объединен с другими более быстрыми селекторами. Было бы полезно услышать, существуют ли какие-либо другие проблемы, о которых мы должны знать.
Я еще ничего не писал, но Джеймс Падолси имеет отличную коллекцию плагинов селектора (для элементов в поле зрения, для внешних ссылок для элементов с определенным свойством .data
и т. д.)
Если вы используете ASP.NET, этот селектор поможет вам найти серверные элементы управления по идентификатору:
$.expr[":"].asp = function(a, i, m) {
return $(a).attr('id') && $(a).attr('id').endsWith(m[3]);
};
Если у вас был серверный элемент управления, который выглядел как
<asp:TextBox runat="server" ID="txtPhoneNumber" />
, вы могли получить к нему доступ следующим образом
$(":asp(txtPhoneNumber)")
РЕДАКТИРОВАТЬ
Забыл добавить концы с расширением
String.prototype.endsWith = function(str) {
return (this.match(str + '$') == str);
};
Поскольку на stackoverflow предлагаются пользовательские селекторы, я добавлю их сюда