Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
想要扩展jQuery以更优雅地选择“按名称”属性吗_Jquery_Jquery Plugins_Jquery Selectors_Css Selectors - Fatal编程技术网

想要扩展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多出太多的元素更有效,因为它们会丢弃不需要的元素的结果。