jquery selector for "#id_article-DYNAMIC_NUMBER-media_d
jquery selector for "#id_article-DYNAMIC_NUMBER-media_description_DYNAMIC_CHAR"
页面上有许多元素的ID看起来像
id_article- Number -media_description _en
^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^
Fixed Prefix Variable Fixed part Variable
Number part
例如:
id_article-0-media_description_en
其中CCD_ 1和CCD_。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的末尾还有另一个动态部分,即语言部分
使用Starts with with the combination of ends with attribute selector。
$("[id^='id_article-'][id$='-media_description']").each(function () {
如果DOM中有其他元素同时满足前缀和后缀条件,但它们之间不包含数字,则也可以将0
0与regex一起使用。
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
您实际上应该为此使用一个类。
一种解决方法是将所有元素与以[id^='id_article']
开头的id
匹配,然后使用正则表达式确定它是否也包含一个后面跟着-media_description_(en|es|de)
的数字
/^id_article-'d+-media_description_(en|es|de)$/
$("[id^='id_article']").each(function () {
if (this.id.match(/^id_article-'d+-media_description_(en|es|de)$/)) {
// It's a match
$(this).css('color', '#f00');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="id_article-0-media_description_en">0 (en)</div>
<div id="id_article-1-media_description_de">1 (de)</div>
<div id="id_article-333-media_description_es">333 (es)</div>
<div id="id_article-NAN-media_description">NaN</div>
相关文章:
- 用于Dynamic Div'的Javascript数学函数;s风格
- Javascript.闭包和dynamic'这'实际上具有约束力
- Jquery Dynamic property
- 用javascript创建对象的dynamic数组
- JSON & Dynamic jQuery Mobile Listview
- Multiple Dynamic Datetimepicker赢得'不要直接打开
- Dynamic Javascript
- Krajee Bootstrap file input dynamic maxFilecount
- 使用jquery在ul菜单中添加li dynamic
- Input.checked创建需要绑定到输入的Dynamic元素
- Dynamic JavaScript onclick
- dynamic制作的下拉列表,当我选择任何列表时,如何在每个下拉列表上使用活动类
- JavaScript createelement for Dynamic 下拉菜单
- jQuery Dynamic Selector
- Angularjs with dynamic model in ng-repeat
- Javascript Dynamic GetElementByID
- Nested Views with Dynamic Id's Angular & Rails
- Dynamic about: URLs using JavaScript Code Modules (XPCOMUtil
- Html dynamic table
- CanvasJs dynamic Data with PHP, mySQL