Пользовательский селектор jquery с двоеточием - PullRequest
0 голосов
/ 02 декабря 2009

Мне нужна функция, чтобы выбрать все элементы с пользовательским атрибутом и взять его имя и значение. например:

<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.

Я хочу пройти через каждый вход, который имеет такие пользовательские атрибуты, и получить значение и ключ в массиве. для этого примера я должен иметь:

ключ = имя, значение = кони

и

ключ = возраст, значение = 20

...

Ответы [ 2 ]

1 голос
/ 03 декабря 2009

Я не думаю, что есть простой способ сделать это одним махом, используя селектор 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']);
    }
});

Я помещаю результаты в объект, а не в массив (что, кажется, имеет больше смысла), но это должно дать вам общее представление о том, нужно ли вам вообще это уточнять.

Удачи!

0 голосов
/ 02 декабря 2009

Вы должны иметь возможность выбрать

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

с помощью

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