Select 带通配符的自定义值
Select custom values with wildcard
在此 fiddle 中,我试图 select 属性值。所以 elems var 应该包含值 listen,submitClicked
& listen,textEntered
http://jsfiddle.net/adrianfiddleuser/g2Rxc/128/
来源:
<input tag="listen,submitClicked" id="click" type="submit" value="click"/>
<input tag="listen,textEntered" id="test" type="textbox" value="test"/>
var elems = $('p[^listen]')
console.log(elems)
但通配符似乎不起作用。如何 select 以 "listen" 开头的自定义值并将这些值添加到数组中?
您没有正确使用 ^=
属性选择器。您需要指定 tag
属性:
p[tag^=listen]
[att^=val]
Represents an element with the att attribute whose value begins with the prefix "val". If "val" is the empty string then the selector does not represent anything.
此外,tag
不是有效的 HTML 属性,您可能需要考虑改用 a data-*
attribute。
正如@JamesDonnelly 正确指出的那样,tag
属性实际上是无效的(尽管它会起作用)。此外,一旦开始扩展 js,在属性值中使用逗号分隔值会使事情变得更难。
根据我从您的示例中了解到的情况,我认为将您的 HTML 结构化如下:
<input data-listen="submitClicked" id="click" type="submit" value="click"/>
<input data-listen="textEntered" id="test" type="textbox" value="test"/>
选择所有 "listen" 的元素就像:
$('[data-listen]');
检查监听特定内容的元素或找出每个元素监听的内容也会容易得多,而无需解析您的 tag
属性中的字符串。
$('[data-listen]').each(function() {
console.log('I listen for ' + $(this).data('listen'));
});
var $listensForSubmit = $('[data-listen="submitClicked"]');
在此 fiddle 中,我试图 select 属性值。所以 elems var 应该包含值 listen,submitClicked
& listen,textEntered
http://jsfiddle.net/adrianfiddleuser/g2Rxc/128/
来源:
<input tag="listen,submitClicked" id="click" type="submit" value="click"/>
<input tag="listen,textEntered" id="test" type="textbox" value="test"/>
var elems = $('p[^listen]')
console.log(elems)
但通配符似乎不起作用。如何 select 以 "listen" 开头的自定义值并将这些值添加到数组中?
您没有正确使用 ^=
属性选择器。您需要指定 tag
属性:
p[tag^=listen]
[att^=val]
Represents an element with the att attribute whose value begins with the prefix "val". If "val" is the empty string then the selector does not represent anything.
此外,tag
不是有效的 HTML 属性,您可能需要考虑改用 a data-*
attribute。
正如@JamesDonnelly 正确指出的那样,tag
属性实际上是无效的(尽管它会起作用)。此外,一旦开始扩展 js,在属性值中使用逗号分隔值会使事情变得更难。
根据我从您的示例中了解到的情况,我认为将您的 HTML 结构化如下:
<input data-listen="submitClicked" id="click" type="submit" value="click"/>
<input data-listen="textEntered" id="test" type="textbox" value="test"/>
选择所有 "listen" 的元素就像:
$('[data-listen]');
检查监听特定内容的元素或找出每个元素监听的内容也会容易得多,而无需解析您的 tag
属性中的字符串。
$('[data-listen]').each(function() {
console.log('I listen for ' + $(this).data('listen'));
});
var $listensForSubmit = $('[data-listen="submitClicked"]');