jQuery自定义选择

时间:2011-02-08 01:17:03

标签: jquery

我想扩展jQuery选择,以便将给定的选择值视为ID。

例如,当你执行$("foo.bar")时,jQuery将尝试选择标签名为foo和类栏的所有元素,但我希望jQuery选择ID为foo.bar的元素。我不想每次都转义点和前置#,而是将jQuery添加为函数,以便我可以执行$("id:foo.bar")之类的操作。

这可以用jQuery吗?如果是这样,有人能告诉我一些例子吗?

感谢。

4 个答案:

答案 0 :(得分:3)

是的。您可以通过扩展.expr[]来创建自己的选择器。例如:

$.extend($.expr[':'], {
   'id': function(elem, i, attr){   
      return( elem.id === attr[3] );
   }
});

用法是:

$(':id(foo.bar)');

演示http://www.jsfiddle.net/cwwGk/1/

答案 1 :(得分:2)

你可以$("[id=foo.bar]")

答案 2 :(得分:2)

如果您使用属性过滤器替换ID选择,则必须在页面上测试该ID的每个元素,而不是使用document.getElementById

如果您想要更方便一点,只需创建自己的包装器即可。如果需要,可以使用jQuery的命名空间:

jQuery.byId = function(id){return $(document.getElementById(id));};

$.byId('foo.bar').addClass('something');

答案 3 :(得分:1)

我没有具体的代码来执行此操作。请注意,覆盖jquery的全局行为可能会破坏其他人所做的插件。如果可以的话,你应该使用jquery 1.5的'sub'功能。它专门设计用于'sub'stitute jquery功能,同时保留其他插件的默认功能。