带冒号的jquery自定义选择器

带冒号的jquery自定义选择器,jquery,selector,colon,Jquery,Selector,Colon,我需要一个函数来选择具有自定义属性的所有元素,并获取其名称和值。例如: <input type="text" my:name="koni" my:age="20" my:city="New York" /> 及 我怎样才能做到 编辑:对不起,忘记粘贴html了 我希望循环遍历具有此类自定义my属性的每个输入,并获取数组中的值和键。对于本例,我应该: key=name, 值=科尼 及 钥匙=年龄, 值=20 …您应该能够选择 <div cheese="brie">foob

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

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

我怎样才能做到

编辑:对不起,忘记粘贴html了

我希望循环遍历具有此类自定义my属性的每个输入,并获取数组中的值和键。对于本例,我应该:

key=name, 值=科尼

钥匙=年龄, 值=20


…您应该能够选择

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

我不认为有一种简单的方法可以使用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']);
    }
});
我把结果放在一个对象而不是一个数组中(这似乎更有意义),但这应该会给你一个大致的想法,如果你想改进它的话


祝你好运

我不清楚你到底想做什么。请尽量更清楚。这将不起作用,因为元素和属性都应该是泛型的。该属性以“my:”开头,但结尾是泛型的
<div cheese="brie">foobar</div>
var items = $("div[cheese]");
$('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']);
    }
});