Home » Code » jquery过滤与查找

jquery过滤与查找

有这么一个jquery对象:$obj = $(‘<div id=”a” data-type=”element”></div><div id=”b”></div>’),要留下有data-type=”element”属性的元素,去掉没有这个属性的元素,要如何操作?

一开始自然的想到用find,$obj.find(“[data-type=element]”),但是结果却为空,根本找不到任何一个,是怎么一回事呢?这里是没有分清楚过滤与查找的区别。过滤,是对当前的jquery集合中的元素进行筛选,去掉一些,留下符合一定条件的,注意是对当前集合中存在的;查找是当前集体中每个元素的后代元素进行筛选,注意是后代元素,所有的后代元素(children是子代而已),或者通过当前元素找它们的的父级子级兄弟等,总之是要找的不在当前集合内。在这里,显然要进行的是过滤,而不是查找。

常用的过滤方法有eq(),first(),last(),hasClass(),filter(),not()等,常用的查找方法有find(),children(),parents(),next(),prev()等。回到开头的问题,应该使用filter()来过滤:$obj.filter(“[data-type=element]”),可能属性选择器一般习惯在find()方法中使用,一时还想不到。实在要使用查找,那就先给个父级,可以这样:$(“<div>”).append($obj).find(“[data-type=element]”)。

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Time limit is exhausted. Please reload CAPTCHA.