jQuery - 如何按属性名称选择值开头 [英] jQuery - How to select value by attribute name starts with

查看:24
本文介绍了jQuery - 如何按属性名称选择值开头的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想通过给出属性名称来选择属性值(仅以开头)例如,如果我们有 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆