作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在页面上有很多 ID 看起来像这样的元素
id_article- Number -media_description _en
^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^
Fixed Prefix Variable Fixed part Variable
Number part
例如:
id_article-0-media_description_en
其中 0
和 en
是动态的。 0
可以是 1, 2, 3, 4.. 而 en
可以是 de
, es
等等
$("[id^='id_article-0-media_description']").each(function () {
var $el = $(this);
var lang = this.id.split('_').pop();
if($.trim($el.val())) {
var a = '#tab_id_article-0-media_description_' + lang;
$('a[href="' + a + '"]').css('background', 'green');
}
});
这行得通。但不够动态,因为id_article-
0-media_description
,0
可以是1、2、3, .....
我试过:
$("[id^='id_article']").each(function () {
var $el = $(this);
var lang = this.id.split('_').pop();
var id = this.id.split('-')[1]; // <----
if ($.trim($el.val())) {
var a = '#tab_id_article-'+id+'-media_description_' + lang;
$('a[href="' + a + '"]').css('background', 'green');
}
});
但它不起作用。我认为问题的关键在于,我应该这样做:
$("[id^='id_article-0-media_description_en']").each(function () {
// ...
});
如何使这个选择器通用?
已更新 抱歉,我忘了说 id 的末尾还有另一个动态部分,即语言部分
最佳答案
使用带有属性选择器的结束组合开始。
$("[id^='id_article-'][id$='-media_description']").each(function () {
<罢工>
您还可以使用 filter
如果 DOM 中有其他元素同时满足前缀和后缀条件但不包含它们之间的数字,则使用正则表达式。
var regex = /^id_article-\d+-media_description_[a-z]{2}$/;
// Narrow down elements by using attribute starts with and ends with selector
var allEls = $("[id^='id_article-']").filter(function () {
// filter the elements that passes the regex pattern
return regex.test($(this).attr('id'));
}).each(// Further code
关于javascript - "#id_article-DYNAMIC_NUMBER-media_description_DYNAMIC_CHAR"的 jquery 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33960325/
我在页面上有很多 ID 看起来像这样的元素 id_article- Number -media_description _en ^^^^^^^^^^^ ^^^^^^
我是一名优秀的程序员,十分优秀!