2009-12-21 3 views
21

Для меня одной из лучших, но недоиспользуемых функций jQuery является custom selector. У меня есть довольно тривиальный пример этого, чтобы выбрать все текстовые поля, которые являются пустыми:Какие полезные пользовательские селектор jQuery вы написали?

$(document).ready(function() { 
    $.extend($.expr[':'], { 
     textboxEmpty: function(el) { 
      var $el = $(el); 
      return ($el.val() == "") && ($el.attr("type") == "text"); 
     } 
    }); 
}); 

И называть:

alert($(":textboxEmpty").length); 

Мне было интересно, на самом деле, если кто-то имел некоторые полезные примеры пользовательских селекторов, которые они написали.

Я, конечно же, не слеплю от этих ошибок, и понимаю, что они могут быть довольно медленными и, как таковые, должны сочетаться с другими более быстрыми селекторами. Было бы полезно услышать, есть ли какие-либо другие проблемы, о которых мы должны знать.

+1

Нет, но это хорошее расширение, спасибо, что разместили его. –

+11

Сообщество wiki? – marcgg

+0

Мне никогда не приходилось писать пользовательский селектор, потому что jQuery уже достаточно прочен –

ответ

10

Я не написал ни, но James Padolsey имеет great collection из селекторных плагин (для элементов в поле зрения, для внешних ссылок, для элементов с конкретным .data недвижимость и т.д.)

3

Если вы используете 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)") 

EDIT

Забыл добавить расширение EndsWith

String.prototype.endsWith = function(str) { 
    return (this.match(str + '$') == str); 
}; 
+0

Нравится! Не совсем уверен, для чего нужны i и m для параметров функции. –

+0

Я думаю, что 'i' для индекса, не цитируйте меня на этом. – Sneakyness

+0

Sneakyness правильно, я для индекса. M возвращает массив, который в этом случае возвратит [": asp (txtPhoneNumber)", "asp", "", "txtPhoneNumber"], поэтому я использую m [3], чтобы получить идентификатор, который я передал в –

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