想要更优雅地扩展jQuery以通过名称属性进行选择

时间:2011-12-17 14:23:59

标签: jquery jquery-plugins jquery-selectors css-selectors

如果我需要经常使用它,我发现这种选择器格式很麻烦:

$('[name="someElementName"]').val()

我考虑过扩展jQuery,以便我可以使用这样的格式:

$('@someElementName').val()

据我所知,jQuery只是遵循CSS的惯例而且我违反惯例。

关于“@”的选择,我只选择了一个特殊字符,它似乎不适用于选择器,不会产生冲突。如果有人有更好的建议,我愿意接受建议。

我没有选择不将name属性用作选择器的一部分。

我正在考虑使用这样的正则表达式:

selectorString.replace(/\@([\d\w\s\-]*)/g, '[name="$1"]')

从这里开始,我被困在如何扩展jQuery以使用这种正则表达式,以便我可以使用像“$('@ someElementName')这样的代码.val();

1 个答案:

答案 0 :(得分:2)

这个怎么样:

(function($) {
    $.named = function(name, context) {
        context = context || document;
        return $(context.getElementsByName(name));
    }
})(jQuery);

用法:

$.named('foo').val();

请参阅http://jsfiddle.net/alnitak/n6nEW/