請問 RegExp().test用if else判斷再加上class的問題
原本的程式碼只有在篩選完後addClass,但是我想在中間加判斷,true加 addClass('selected'),false加 removeClass('selected'),可是用this會跑出 物件不支援此屬性或方法的錯誤,請問要怎麼修改呢?謝謝~[code]
//原本的
if(condition){
filterSection.find('tbody#result tr').find(column).filter(function(){
(new RegExp(condition).test(this.innerText));
}).addClass('selected');
}
//修改的
if(condition){
filterSection.find('tbody#result tr').find(column).filter(function(){
a = (new RegExp(condition).test(this.innerText));
if(a==true){
this.addClass('selected')}
else{
this.removeClass('selected')}
})
}[/code] 根據 API 文件寫的,這邊的 this 指的是 DOM element,非 jQuery 物件
要用 jQuery 的 function 可以改用 $(this) 試試
不過我看你寫的邏輯,似乎有些問題,filter 裡面帶 function 是拿來做 filter 判斷的,以便後續的處理
例如原本的 filter 之後,還會加上 addClass 的動作
如果你在 filter() 那一段已經是做 loop 處理,不需後續的動作,應該改用 each() 去處理 [i=s] 本帖最後由 eaitng 於 2010-7-27 16:50 編輯 [/i]
謝謝wmh的回應,我改成下面這樣就OK了[code] $('.FilterSection').find('tbody#result tr').each(function(){
a=true;
b=true;
c=true;
d=true;
if(condition_zone){
$(this).find('.column_zone').filter(function(){
a = new RegExp(condition_zone).test(this.innerText);
})
}
if(condition_no){
$(this).find('.column_no').filter(function(){
b = new RegExp(condition_no).test(this.innerText);
})
}
if(condition_name){
$(this).find('.column_name').each(function(){
c = new RegExp(condition_name).test(this.innerText);
})
$(this).find('.column_ename').each(function(){
d = new RegExp(condition_name).test(this.innerText);
})
}
if(a && b && (c||d) ){
$(this).addClass('selected');
}
})
$('tbody#result tr').hide();
$('.selected').show();
[/code] 有一個問題想請教
$('.FilterSection').find('input:text[name=name]').each(function(){
condition_name = $.trim(this.value);
})
我要讀取input:text name的值,不知道find後面要用什麼接,用each(function())又怪怪的,想請教上面的寫法可以怎麼修改呢?
謝謝~
頁:
[1]