Подтвердить что ты не робот

Есть ли подстановочный знак для идентификаторов (id)?

Если у меня есть неизвестное количество идентификаторов, разделяющих определенную схему именования, есть ли способ сразу их захватить с помощью jQuery?

// These are the IDs I'd like to select
#instance1
#instance2
#instance3
#instance4

// What do I need to add or how do I need to modify this jQuery selector in order to select all the IDs above?
("#instanceWILDCARD").click(function(){}
4b9b3361

Ответ 1

Атрибут начинает с селектора ('^=) будет работать для ваших идентификаторов, например:

$("[id^=instance]").click(function() {
  //do stuff
});

Однако подумайте о том, чтобы дать вашим элементам общий класс, например (я взламываю себя) .instance и использовать этот селектор:

$(".instance").click(function() {
  //do stuff
});

Ответ 2

Если вы действительно хотите сопоставлять классы, а не идентификаторы, синтаксис немного более активен, так как класс может иметь несколько значений.

// handle elements like <div class="someclass1"></div>
$('[class^="someclass"]').click(function() {
   // do stuff
});

// handle elements like <div class="foo someclass1"></div>
$('[class*=" someclass"]').click(function() {
   // do stuff
});

Ответ 3

Я удивлен, что никто не упомянул о создании собственного селектора фильтров (расширением функциональности JQuery Selector). Здесь я создал селекторы подстановочных знаков, которые я назвал "likeClass" и "likeId", который принимает любую подстановочную строку и найдет все элементы, которые соответствуют (аналогично соответствию Regex).

Код:

$.expr[':'].likeClass = function(match){
      return $('[class*=" '+ match +'"]');
};
$.expr[':'].likeId = function(match){
      return $('[id*=" '+ match +'"]');
};

Пример использования

Теперь предположим, что у вас есть несколько элементов div с похожими именами, такими как .content-1,.content-2,.content-n... и т.д., и вы хотите их выбрать. Теперь это торт!

$( 'ДИВ: likeClass (контент-)');//Возвращает все элементы, имеющие аналогичное имя класса: content - *

или

$( 'ДИВ: likeClass (контент-)');//Возвращает все элементы с похожим идентификатором: content - *

О да, еще одна вещь... вы тоже можете ее сцепить.:)

$('li:likeId(slider-content-)').hide().addClass('sliderBlock').first().fadeIn('fast');

Наслаждайтесь!

Ответ 4

Нет необходимости в дополнительном expr или что-нибудь интересное, если у вас есть jQuery

jQuery('[class*="someclass"]').click(function(){
});

jQuery('[id*="someclass"]').click(function(){
});

Как отмечено: fooobar.com/questions/89490/...

Ответ 5

Почему бы вам просто не назначить class = "instance" всем им и выбрать их с помощью $('.instance')?

Ответ 6

Это идентификаторы, но вы можете сделать что-то похожее на:

$("[id^='instance']").click(...)

Это немного дорого - помогает, если вы можете указать либо a) тип элемента, либо b) общее положение в DOM, например:

$("#someContentDiv span[id^='instance']").click(...)

Селектор [id^='...'] в основном означает "найти элемент, идентификатор которого начинается с этой строки, аналогичный id$= (ID заканчивается этой строкой) и т.д.

Вы можете найти исчерпывающий список на странице Документов jQuery здесь.

Ответ 7

Используйте морковь.

$("div[id^=instance]").hide();

Пример jsFiddle

Ответ 8

Мы можем сделать это следующим образом:

$(document).ready(function () {
    $('[id*=btnOk]').live("click", function () {

    });
});

Ответ 9

Это единственный правильный ответ на вопрос о шаблоне id.

$('[id*="Wild card in double quotes"]') 

Это получит "Дикую карту в двойных кавычках, а там еще!!!", а также "Больше BS перед Wild Wild Card в двойных кавычках".

Вы должны использовать кавычки, отличные от ваших тегов [].