jQuery - 如何按属性名称选择值开头 [英] jQuery - How to select value by attribute name starts with
问题描述
我想通过给出属性名称来选择属性值(仅以开头)例如,如果我们有 html 标签
我想从以data-
预先感谢您的帮助.
如果你想要所有的data-*属性,可以遍历jq数据对象:
$('.slide').each(function(){for($(this).data() 中的数据)控制台日志(数据);//返回confirmID so 元素作为属性`data-confirmID`});
但是这个数据对象可以包含其他不是属性的键,例如由一些插件设置.
编辑
要让各种属性以"开头,可以自定义自己的jQuery选择器:
jQuery.extend(jQuery.expr[':'], {attrStartsWith: 函数 (el, _, b) {for (var i = 0, atts = el.attributes, n = atts.length; i < n; i++) {if(atts[i].nodeName.toLowerCase().indexOf(b[3].toLowerCase()) === 0) {返回真;}}返回假;}});//例如:$('.slide:attrStartsWith("data-")').css('color', 'red');$('.slide:attrStartsWith("conf")').css('color', 'blue');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script><div class="slide" data-confirmID="46" data-testID="666">1</div><div class="slide" confirmID="54" >2</div>
如果在另一侧,您想检查以特定字符串结尾的属性,可以使用:
jQuery.extend(jQuery.expr[':'], {attrEndsWith: 函数 (el, _, b) {for (var i = 0, atts = el.attributes, n = atts.length; i < n; i++) {var att = atts[i].nodeName.toLowerCase(),str = b[3].toLowerCase();if(att.length >= str.length && att.substr(att.length - str.length) === str) {返回真;}}返回假;}});$('.slide:attrEndsWith("testID")').css('color', 'red');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script><div class="slide" data-confirmID="46" data-testID="666">1</div><div class="slide" confirmID="54" >2</div>
I want to select attribute value by giving attribute name (only starts with) For instance if we have html tag
<div class = "slide" data-confirmID = "46" confirmID = "54"/>
I want to select the value from the attribute starts with data-
Thanks in advance for the help.
If you want all data-* attributes, you can iterate through jq data object:
$('.slide').each(function(){
for(data in $(this).data())
console.log(data); // returns confirmID so element as an attribute `data-confirmID`
});
But this data object can contains other keys which aren't attribute, setted for example by some plugins.
EDIT
To get all kinds of attribute to "starts with", you can customize your own jQuery selector:
jQuery.extend(jQuery.expr[':'], {
attrStartsWith: function (el, _, b) {
for (var i = 0, atts = el.attributes, n = atts.length; i < n; i++) {
if(atts[i].nodeName.toLowerCase().indexOf(b[3].toLowerCase()) === 0) {
return true;
}
}
return false;
}
});
//e.g:
$('.slide:attrStartsWith("data-")').css('color', 'red');
$('.slide:attrStartsWith("conf")').css('color', 'blue');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="slide" data-confirmID="46" data-testID="666">1</div>
<div class="slide" confirmID="54" >2</div>
If on the opposite side, you want to check for attribute ends with specific string, you can use:
jQuery.extend(jQuery.expr[':'], {
attrEndsWith: function (el, _, b) {
for (var i = 0, atts = el.attributes, n = atts.length; i < n; i++) {
var att = atts[i].nodeName.toLowerCase(),
str = b[3].toLowerCase();
if(att.length >= str.length && att.substr(att.length - str.length) === str) {
return true;
}
}
return false;
}
});
$('.slide:attrEndsWith("testID")').css('color', 'red');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="slide" data-confirmID="46" data-testID="666">1</div>
<div class="slide" confirmID="54" >2</div>
这篇关于jQuery - 如何按属性名称选择值开头的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!