今天刚刚遇到的问题,用jquery主要的目的是想匹配一个标签内的字符串后执行几个操作
1 {loop $qq_result $activity} 2 <dd> 3 <a href="qq?viewthread&tid={$qq[‘tid‘]}&mobile=2"> 4 <div class="deantabimg"><img src="qq/{$activity[‘activityaid_url‘]}" width="120" zsrc="qq/forum/{$activity[‘activityaid_url‘]}" style="display: inline; visibility: visible;"></div> 5 <div class="deantabinfo"> 6 <div class="deantabil"><span>{$qq[‘author‘]}</span></div> 7 <h3>{$qq[‘subject‘]}</h3> 8 <div class="deantabir"><span class="qq_price">¥ <b>{$qq[‘use_cost‘]}</b> 元</span> <span class="view_reply_wrap"><b>{$qq[‘views‘]}</b><strong>{$qq[‘replies‘]}</strong></span></div> 9 </div> 10 </a> 11 </dd> 12 {/loop}
这总共循环了10条数据,我想查询到的是.deantabil 下的span里的数据,首先我是用的是each方法循环遍历,当我想获取{$qq[‘author‘]} 的text()时 我使用的是this ,结果浏览器报错:
$(".activity_list dd").each(function() { var text = this.find(‘.deantabil span‘).text(); if(text === ‘文‘ || text ===‘宇‘){ this.remove(); }
this并没有指向当前的 <dd> ,我使用console.log打印this,这个this指向了html对象;之后我又将this换成$(".activity_list dd .deantabil")想让它寻找span,结果text变量变成了包含了10条数据数组;
最后将this改用了jquery的特殊上下文对象 $(this),查询正常,输出也正常。这就证明在each()方法内部 必须得和$(this)配套使用。
它们之间的区别:$(this)是jquery的特殊上下文对象,在each循环遍历的语句中尤为重要;this则是原生的html上下文,使用范围更加广泛。
时间: 2024-11-24 11:15:32