1. 程式人生 > >jQuery的 this和$(this)

jQuery的 this和$(this)

tab 循環 amp ole .text lin 原生 我想 for

今天剛剛遇到的問題,用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)