But :has() and :contains() do two completely different things. :contains() filters based on text contents while :has() filters based on selectors. So, I think it would be a really bad idea to try to combine them.
--Karl On Dec 17, 2009, at 3:48 PM, Matt Maxwell wrote: > I think .has() should return a bool, :has() should be combined > with :contains() (the finished filter named :contains()), > and .contains() should go away. > > That seems to make the most sense to me, anyways. > > On Thu, Dec 17, 2009 at 9:20 AM, Karl Swedberg > <k...@englishrules.com> wrote: > On Dec 16, 2009, at 11:14 PM, John Resig wrote: > >> People are use to using .has()? It was only just added - at the same >> time as .contains() as well. >> >> I'll mull over the .contains() discrepancy. I may just punt it and >> push people towards .has() anyway. >> >> Looking at .has() now I'm not 100% sure why it's filtering and not >> just returning a boolean, like .is(). Hmm. If .has() returns a >> boolean >> then yeah, consider .contains() gone (and a jQuery.contains will be >> provided for those that need a lightweight method). >> >> --John > > > But if .has() returns a boolean, then we have the same problem > with :has() vs. .has() as we had with :contains() vs. contains(). > > Since :has() is a filter, I would expect .has() to be a filter. > > On Dec 17, 2009, at 12:45 AM, Rick Waldron wrote: >> John, I tend to assume that anything prefixed with 'is' or 'has' >> will return a boolean. I think this is likely a common assumption. > > I typically assume the same thing, but in this case .has() is not a > prefix; it's the full method name. And we already have the pseudo- > selector :has() that acts as a filter. > > > --Karl > >> On Wed, Dec 16, 2009 at 11:04 PM, ajpiano <ajpi...@gmail.com> wrote: >>> It seems like a matter of course that means of filtering that are >>> exposed as both pseudoselectors and methods on the jQuery prototype >>> return the same set of elements, or at least that they generally >>> apply >>> the same principle in filtering. Examples include eq, not, first, >>> last, and has. While the :parent pseduo doesn't work the same >>> as .parent(), most developers know what they're looking for if >>> they're >>> using :parent. >>> >>> The new $.fn.contains method, however, doesn't work like :contains. >>> Rather than searching for the text content of >>> elements, .contains() is >>> just a shortcut to $(elem).has("foo").length > 0. I'm not sure why >>> this is really a necessary shortcut, given that most people are >>> plenty >>> used to doing something like .has().length anyway. I tend to think, >>> however, that .contains () should work like :contains, for >>> consistency's sake. >>> >>> This would have the added benefit of allowing those people who do >>> use :contains to write code like this: >>> >>> var foo = "barbazbat"; >>> $("div").contains(foo); >>> >>> instead of >>> $("div:contains("+foo+")"); >>> >>> Anyone else have any thoughts on this? >>> >>> --adam >>> >>> -- >>> >>> You received this message because you are subscribed to the Google >>> Groups "jQuery Development" group. >>> To post to this group, send email to jquery-...@googlegroups.com. >>> To unsubscribe from this group, send email to >>> jquery-dev+unsubscr...@googlegroups.com >>> . >>> For more options, visit this group at >>> http://groups.google.com/group/jquery-dev?hl=en >>> . >>> >>> >>> >> >> -- >> >> You received this message because you are subscribed to the Google >> Groups "jQuery Development" group. >> To post to this group, send email to jquery-...@googlegroups.com. >> To unsubscribe from this group, send email to >> jquery-dev+unsubscr...@googlegroups.com >> . >> For more options, visit this group at >> http://groups.google.com/group/jquery-dev?hl=en >> . >> >> > > > -- > > You received this message because you are subscribed to the Google > Groups "jQuery Development" group. > To post to this group, send email to jquery-...@googlegroups.com. > To unsubscribe from this group, send email to > jquery-dev+unsubscr...@googlegroups.com > . > For more options, visit this group at > http://groups.google.com/group/jquery-dev?hl=en > . > > > -- > > You received this message because you are subscribed to the Google > Groups "jQuery Development" group. > To post to this group, send email to jquery-...@googlegroups.com. > To unsubscribe from this group, send email to > jquery-dev+unsubscr...@googlegroups.com > . > For more options, visit this group at > http://groups.google.com/group/jquery-dev?hl=en > . -- You received this message because you are subscribed to the Google Groups "jQuery Development" group. To post to this group, send email to jquery-...@googlegroups.com. To unsubscribe from this group, send email to jquery-dev+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/jquery-dev?hl=en.