想要扩展jQuery以更优雅地选择“按名称”属性吗
如果我需要经常使用此选择器格式,我会发现它很麻烦:想要扩展jQuery以更优雅地选择“按名称”属性吗,jquery,jquery-plugins,jquery-selectors,css-selectors,Jquery,Jquery Plugins,Jquery Selectors,Css Selectors,如果我需要经常使用此选择器格式,我会发现它很麻烦: $('[name="someElementName"]').val() 我考虑扩展jQuery,以便使用如下格式: $('@someElementName').val() selectorString.replace(/\@([\d\w\s\-]*)/g, '[name="$1"]') 我知道jQuery只是遵循CSS的惯例,我正在打破惯例 关于“@”的选择,我只是选择了一个特殊的字符,它似乎没有被选择器使用,也不太可能造成冲突。如果有人
$('[name="someElementName"]').val()
我考虑扩展jQuery,以便使用如下格式:
$('@someElementName').val()
selectorString.replace(/\@([\d\w\s\-]*)/g, '[name="$1"]')
我知道jQuery只是遵循CSS的惯例,我正在打破惯例
关于“@”的选择,我只是选择了一个特殊的字符,它似乎没有被选择器使用,也不太可能造成冲突。如果有人有更好的建议,我愿意接受
我没有选择不使用name属性作为选择器的一部分
我在考虑像这样使用正则表达式:
$('@someElementName').val()
selectorString.replace(/\@([\d\w\s\-]*)/g, '[name="$1"]')
从这里开始,我一直在思考如何扩展jQuery以使用正则表达式,这样我就可以使用“$('@someElementName').val();这样的代码:
(function($) {
$.named = function(name, context) {
context = context || document;
return $(context.getElementsByName(name));
}
})(jQuery);
用法:
$.named('foo').val();
请参见@Alnitak IMHO,它没有我所希望的解决方案那么优雅,但它比我原来的问题有了改进。我基于您的代码构建了链接:您的代码加上
$.fn.named=function(arg){return$(this).filter('[name=“'+arg+']);}
请参阅-我不知道此代码是否代表良好做法。@如果您要这样做,请使用.filter
中的函数,例如.filter(函数(idx){返回this.name==arg})
@DG直接向DOM请求所需的元素也比让jQuery多出太多的元素更有效,因为它们会丢弃不需要的元素的结果。