如何使用jQuery遍历class为lorem的ul列表项?含代码疑问
嘿,我来帮你梳理下问题并给出正确的实现方式~
首先得指出你原代码里的两个核心问题:
nums.getElementsByTagName(".lorem li")写法错误:getElementsByTagName只能传入纯标签名(比如"li"),不能传入CSS选择器;而且要选中.lorem下的li,用jQuery的选择器会更顺手。- 普通
for循环里的$(this)不指向当前遍历的li:这个上下文里的this是全局对象(浏览器里是window),根本取不到当前列表项的内容。
下面给你几种正确的jQuery遍历实现方式:
方法1:使用jQuery的.each()方法(推荐)
这是jQuery专门为遍历集合设计的方法,语义清晰且代码简洁:
// 先选中.lorem下的所有li,再遍历每一项 $('.lorem li').each(function() { // 这里的this自动指向当前遍历的li DOM元素 if ($(this).text().trim() === 'hello') { // 执行你需要的操作,比如: $(this).css('color', 'red'); console.log('找到目标列表项啦!'); } });
小贴士:加上.trim()是为了避免文本前后的空格导致匹配失败,比如列表项里是" hello "也能正确匹配。
方法2:用普通for循环(如果习惯原生循环逻辑)
如果偏爱原生循环的写法,也可以先获取jQuery集合,再通过索引访问元素:
// 获取.lorem下所有li的jQuery集合 var listItems = $('.lorem li'); for (var i = 0; i < listItems.length; i++) { // 两种方式获取当前项的jQuery对象: var currentItem = listItems.eq(i); // 或者 var currentItem = $(listItems[i]); if (currentItem.text().trim() === 'hello') { // 执行操作,比如添加高亮类 currentItem.addClass('highlight'); } }
方法3:直接过滤后操作(更简洁)
如果你的需求只是找到文本为hello的li并执行操作,甚至可以跳过手动遍历,直接用过滤方法:
// 精确匹配文本内容 $('.lorem li').filter(function() { return $(this).text().trim() === 'hello'; }).addClass('highlight').text('已找到目标项');
如果不需要精确匹配(只要包含hello即可),还能更简单:
// :contains选择器会匹配所有包含指定文本的元素(大小写敏感) $('.lorem li:contains("hello")').addClass('highlight');
内容的提问来源于stack exchange,提问作者Henrik Petterson
相关产品推荐
相关产品推荐

