是否有标识符(id)的通配符选择器?

发布于 2024-09-19 01:49:24 字数 315 浏览 8 评论 0原文

如果我有未知数量的标识符共享特定的命名方案,有没有办法使用 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(){}

If I have an unknown amount of identifiers sharing a specific naming-scheme, is there a way to grab them all at once using 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(){}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

天涯离梦残月幽梦 2024-09-26 01:49:24

属性开头选择器 ('^=) 将适用于您的 ID,如下所示:

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

但是,请考虑为您的元素提供一个公共类,例如(我自己笑了).instance,并使用该选择器:

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

The attribute starts-with selector ('^=) will work for your IDs, like this:

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

However, consider giving your elements a common class, for instance (I crack myself up) .instance, and use that selector:

$(".instance").click(function() {
  //do stuff
});
春花秋月 2024-09-26 01:49:24

如果您确实想要匹配类,而不是 id,则语法会稍微复杂一些,因为类可以有多个值。

// 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
});

If you really want to match classes, not ids, the syntax is a bit more involved, since class can have multiple values.

// 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
});
悟红尘 2024-09-26 01:49:24

我很惊讶没有人提到创建自己的过滤器选择器(通过扩展 jQuery 的选择器功能)。在这里,我创建了一个名为“likeClass”和“likeId”的通配符选择器,它接受任何通配符字符串,并将查找所有匹配的元素(类似于正则表达式匹配)。

代码:

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

示例用法:

现在假设您有多个名称相似的 div 元素,例如 .content-1、.content-2、.content-n... 等,并且你想选择它们。现在是蛋糕!

$('div:likeClass(content-)'); // 返回具有相似类名的所有元素:content-*

$('div:likeClass(content-)'); // 返回具有相似 ID 的所有元素:content-*

哦,是的,还有一件事......您也可以链接它。 :)

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

享受!

I'm surprised no one has mentioned creating your own filter selector (by extending jQuery's Selector functionality). Here I've created a wildcard selectors I called "likeClass" and "likeId" that accepts any wildcard string and will find all elements that are a match (similar to Regex matching).

Code:

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

Example Usage:

Now let's say you had multiple div elements with similar names like .content-1, .content-2, .content-n... etc and you want to select them. Now it's cake!

$('div:likeClass(content-)'); // Returns all elements that have a similar Classname: content-*

or

$('div:likeClass(content-)'); // Returns all elements that have a similar ID: content-*

Oh yeah, one more thing... you can chain it too. :)

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

Enjoy!

薄荷→糖丶微凉 2024-09-26 01:49:24

如果您有 jQuery,则不需要额外的 expr 或任何花哨的东西

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

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

如上所述: https://stackoverflow.com/a/2220874/2845401

No need for additional expr or anything fancy if you have jQuery

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

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

As noted: https://stackoverflow.com/a/2220874/2845401

往事风中埋 2024-09-26 01:49:24

这些是 ID,但您可以执行类似的操作:

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

虽然这有点昂贵 - 如果您可以指定 a) 元素的类型或 b) DOM 中的一般位置,则会有所帮助,例如:

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

[id ^='...'] 选择器基本上意味着“查找 ID 以该字符串开头的元素,类似于 id$=(ID 以该字符串结尾)等。

您可以在 此处 的 jQuery 文档页面上可以找到完整的列表。

Those are IDs, but you can do something similar to:

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

That's a bit expensive though - it helps if you can specify either a) the type of element or b) a general position in the DOM, such as:

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

The [id^='...'] selector basically means "find an element whose ID starts with this string, similar to id$= (ID ends with this string), etc.

You can find a comprehensive list on the jQuery Docs page here.

久隐师 2024-09-26 01:49:24

为什么不直接将 class = "instance" 分配给所有这些并使用 $('.instance') 选择它们呢?

Why don't you just assign class = "instance" to all of them and select them using $('.instance')?

隐诗 2024-09-26 01:49:24

使用胡萝卜。

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

jsFiddle 示例

Use the carrot.

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

jsFiddle example

屋檐 2024-09-26 01:49:24

这是 id 通配符问题的唯一正确答案。

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

这将得到“双引号中的通配符。还有更多!”,以及“Wild 前面有更多 BS。双引号中的通配符”。

您应该使用与“[]”标签不同的引号。

This is the only correct answer to the id wildcard question.

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

This will get "Wild card in double quotes. And there's more!!!", and also "More BS in front of Wild. Wild card in double quotes".

You should use quote marks that are different than your '[]' tags.

荭秂 2024-09-26 01:49:24

我们可以这样做:

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

    });
});

We can do it this way:

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

    });
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文