$('#waterfall').each(function() {
$(this).find('div.item').each(function() {
element = $(this).find('span').first();
alert(element.text());
});
第一个waterfall可以,第二个waterfall就没有响应了
不能这样嵌套吗?
1.#waterfall是id选择器,你确定有俩?
2.俩each为什么不合成一个?$('#waterfall div.item').each();应该是一样的效果
- 手册中说
$.each
方法遍历jQuery对象的集合,注意,是集合!你用ID选择器怎么可能选出集合。 -
$(this).find('div.item')
, find本身也是一个文档遍历器,你上边一段小代码里,遍历了四次文档,两次each、两次find。 - 不要想着所有事情都自己做,你这样的文档结构,直接让网站程序员,在模板引擎里给你的
#waterfall div.item span:first
增加个Class,例如waterGuy,然后你直接$('#waterfall span.waterGuy').text();
取。
Javascript不是万能的,要考虑什么最合适,而不是最方便,如果我公司前端像你这么写代码我艹死她。这种行为无异于方便自己、祸害用户、又不和别的程序员协作。
跟JQ没有关系,题主试试原生方法,document.getElementById('waterfall')。方法只返回第一个id为waterfall的元素,后面的都直接无视,ID在同一页面不可以出现两次,建议改html结构吧。class="waterfall"都行,你的代码只要改为$('.waterfall')就能用了。