在这个小提琴中,我试图选择属性值。因此,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)
但是通配符似乎不起作用。如何选择以&#34; listen&#34;开头的自定义值并将这些值添加到数组?
答案 0 :(得分:2)
您没有正确使用^=
属性选择器。您需要指定tag
属性:
p[tag^=listen]
[att^=val]
表示具有att属性的元素,其值以前缀“val”开头。如果“val”是空字符串,则选择器不代表任何内容。
此外,tag
不是有效的HTML属性,您可能需要考虑使用a data-*
attribute。
答案 1 :(得分:0)
正如@JamesDonnelly正确地指出tag
属性实际上是无效的(尽管它会起作用)。此外,在开始扩展js时,在属性值中使用逗号分隔值会使事情变得更难。
根据我的例子,我认为按照以下方式构建HTML会更好:
<input data-listen="submitClicked" id="click" type="submit" value="click"/>
<input data-listen="textEntered" id="test" type="textbox" value="test"/>
选择&#34; listen&#34;会很简单:
$('[data-listen]');
检查侦听特定内容的元素或查找每个元素侦听的内容也更容易,而不必解析您的tag
属性中的字符串。
$('[data-listen]').each(function() {
console.log('I listen for ' + $(this).data('listen'));
});
var $listensForSubmit = $('[data-listen="submitClicked"]');