在jquery中选择ID+任意数字
Selecting ID + any number in jquery
我是stackoverflow和jQuery的新手,所以我在制作一个简单的函数时遇到了一些麻烦。
我的网站上基本上有一个随机数目的id "filtro" + "some number"
链接,我只想写一个代码来执行点击其中任何一个链接的操作(这稍后会影响到具有相同"filtro"+"一些数字"的类)。
例如:单击"#filttro3",在".filtro3"上执行操作。
问题是,我不知道如何在jQuery中为"任意数字"编写字符串。我正在考虑做这样的事情:
$(function () {
$("#" + "filtro" + SOME NUMBER).click(function () {
//Do something with the element "." + "filtro" + SOME NUMBER
});
});
有什么想法吗?非常感谢。
Ps.:这是我的第一个问题,如果我犯了任何错误,我深表歉意。
解决。戴斯特洛伊的解决方案很有魅力。
为了将来参考其他人,我编写此代码是为了为图片库制作一个简单的过滤器菜单。这样我就可以隐藏/显示某些主题的图片。
您似乎想要
$(function () {
$("[id^=filtro]").click(function () {
var num = this.id.slice(6);
// if there is a risk of ambiguity, you might check here that +num==num
var $elem = $('.filtro'+num);
...
});
});
解释:
$("[id^=filtro]")
使用starts with选择器来选择id以"filtro"开头的所有元素this.id.slice(6);
取从第六个字符之后开始的id部分。也许this.id.slice('filtro'.length)
或this.id.substring('filtro'.length)
会更清楚
您最初的问题有一些很好的答案,但我想建议一个可能更清洁的替代方案。
您可以使用data-*
属性而不是ID来选择元素。例如,您的元素可能看起来像
<a data-filtro=6 href='...'>link</a>
<a data-filtro=7 href='...'>link</a>
<a data-filtro=8 href='...'>link</a>
然后可以使用$('[data-filtro]')
选择这些元素,并在回调中使用$(this).data('filtro')
。例如,
$("[data-filtro]").click(function() {
var ele = $(this);
var num = ele.data('filtro');
// do whatever you want with num
});
这种技术在许多地方都有使用,包括Foundation框架。它可以更容易地将您的行为提取到一个不依赖于元素ID的单独插件中。随着应用程序变得越来越复杂,与每个元素相关的行为数量也在增加,每个元素看起来都像
<a data-filtro=6 data-foo data-bar href="...">link</a>
而不是
<a id="filtro-6_and_bar_and_foo" href="...">link</a>
如果单击的元素的id
和您想要更改的元素的class
相同,那么它应该像使用元素的id
作为类选择器的输入一样简单:
使用您的代码作为基础:
$(function () {
$("[id^=filtro]").click(function () {
$("." + $(this).prop("id")).some_method_here();
});
});
例如,我假设目标元素是<div>
s。这将导致任何具有匹配类的<div>
元素显示为红色文本:
$(function () {
$("[id^=filtro]").click(function () {
$("div", "#filterTest").css("color", "#000000");
$("." + $(this).prop("id")).css("color", "#FF0000");
});
});
既然我看到你是JQuery的新手。
- 正如dystroy所说,
$("[id^=filtro]")
选择所有具有和以"filtro"开头的id
的元素 $(this).prop("id")
获取当前元素(即刚刚点击的元素)的id
$("." + $(this).prop("id"))
接受id
,并通过在开头添加"."使其成为类选择器的一部分。这将选择class
值与单击的元素的id
值相同的所有元素
编辑:-您也可以使用this.id
(标准JavaScript)来代替$(this).prop("id")
,这只是JQuery实现相同功能的方法。
$("[id^=filtro]").click(function() {
$('.someClassName'+ this.id.match(/'d+/) ).toggle();
});
现场演示
[id^=filtro]
中的^
是"Starts With"选择器,它将match
ID以filtro
开头的任何元素
现在让我们使用一些Regex从ID中检索号码,this.id.match(/'d+/);
获取"单击的元素ID"名称并检索所有数字d+
该数字用于匹配CLASS元素选择器。
- RegExp匹配任意字符串+8位数字
- 任意精度数字和Javascript,Google Web Toolkit
- 如何在javascript中生成任意四个数字之间的随机数
- 在JavaScript中递归地添加任意两个数字
- 在 Javascript 中将任意字符串转换为 0 到 1 之间的数字
- 任意字符数的正则表达式不受限制,但应仅允许 12 个数字
- 在 javascript 中为任意整数生成教会编码数字
- 如何在条件中实现任意数字
- 如何在任意范围内随机选择数字并使用 JavaScript 数组相加
- 在jquery中选择ID+任意数字
- Javascript-RegExp匹配任意数字,包括无穷大、负数和e+/-数字
- Javascript:正则表达式,用于匹配任意序列中的8位数字、一个字符和一个hypen
- JS(jQuery)-如果条件-任意数字
- 正则表达式:匹配以任意数字结尾的字符串
- 在 JavaScript 中使用 for 循环编写代码,提示用户输入任意数量的数字,打印这些数字中最大和最小的数字
- 将表示任意基数的数字的字符串转换为数字
- JavaScript Number是任意精度的数字吗?
- 提取任意给定数组中的所有数字,然后将它们全部相加
- 在特定的两个数字之后得到接下来的6个任意数字
- 是否可以将$index以任意数字进行n -repeat递增