带冒号的jquery定制选择器

3pmvbmvn  于 2023-01-25  发布在  jQuery
关注(0)|答案(2)|浏览(133)

我需要一个函数来选择所有具有自定义属性的元素,并取其名称和值。例如:

<input type="text" my:name="koni" my:age="20" my:city="New York" />

注意,我的总是相同的,但后面没有。在我的函数中,我想说:

var attr = //here should be the attribute (attr, or attr2)

以及

var value = //here should be the value (test, or hello)

我怎么才能做到呢?
编辑:对不起,忘记粘贴html了。
我想循环through每个输入有这样的自定义我的属性,并得到一个数组的值和键.对于这个例子,我应该有:
键=名称,值= koni
以及
键=年龄,值= 20
...

xdyibdwo

xdyibdwo1#

我不认为有一种简单的方法可以使用jquery选择器一次性完成这一任务,因为您不知道要查找的属性的确切名称。(您只知道它的前缀。)因此,也许您可以循环所有输入,然后遍历属性,检查是否有任何需要的匹配?

$('input').each(function() {
    var result = {};                                // to hold any results we might find
    var attrs = this.attributes;                    // this array is provided by the DOM
    for (var idx in attrs) {
        var attrName = attrs[idx].name;
        if (/^my:/.test(attrName)) {                 // must start with this hardcoded pattern
            var key = attrName.substring(3);        // skip first 3 chars
            var value = $(this).attr(attrName);
            result[key] = value;
        }
    }
    // do something with your result obj here...
    if (result['name']) {
        alert('found input with my:name of ' + result['name']);
    }
});

我把结果放在一个对象中,而不是数组中(这似乎更有意义),但如果您想对此进行改进,这应该会给予您一个大致的概念。
祝你好运!

y53ybaqx

y53ybaqx2#

您应该能够选择

<div cheese="brie">foobar</div>

使用

var items = $("div[cheese]");

相关问题