首页 > 代码库 > jQuery的 this和$(this)

jQuery的 this和$(this)

今天刚刚遇到的问题,用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上下文,使用范围更加广泛。

 

jQuery的 this和$(this)