jQuery自定义选择
我想扩展jQuery选择,以便它将给定的选择值视为一个ID。jQuery自定义选择
例如,当您做$("foo.bar")
时,jQuery将尝试选择标签名为foo和类栏的所有元素,但我希望jQuery选择ID为foo.bar
的元素。我不希望每次都需要转换点并预先安装一个#
,我想添加一个jQuery作为一个函数,以便我可以执行诸如$("id:foo.bar")
之类的操作。
这可能与jQuery?如果是这样,任何人都可以给我一些例子吗?
谢谢。
如果您有一个属性过滤器更换ID的选择,它必须测试页面的每一个元素该ID代替使用document.getElementById
。
如果你想多一点便利,只需创建自己的包装。如果你愿意,可以使用jQuery的命名空间:
jQuery.byId = function(id){return $(document.getElementById(id));};
$.byId('foo.bar').addClass('something');
我没有具体的代码来做到这一点。请注意,重写jquery的全局行为可能会破坏其他人所做的插件。如果你可以的话,你应该使用jQuery 1.5的'sub'特性。它专门设计用于“保留jquery特性”,同时保留其他插件的默认功能。
这是一个链接。 http://api.jquery.com/jQuery.sub/ – rcravens 2011-02-08 01:23:50
你可以做$("[id=foo.bar]")
它。您可以通过扩展.expr[]
来创建自己的选择器。例如:
$.extend($.expr[':'], {
'id': function(elem, i, attr){
return(elem.id === attr[3]);
}
});
用法是:
$(':id(foo.bar)');
出于好奇...为什么?可读性? – 2011-02-08 01:22:09
我的项目使用Spring MVC,其中嵌套的元素名称(如foo.bar)非常常见。我需要大量选择这些元素,并且不得不预先在数字符号前添加ID,更重要的是,每次都会出现转义点。 – 2011-02-08 01:25:03
您是否意识到这样做会使您受到的性能下降? – RightSaidFred 2011-02-08 01:52:08