2013-02-07 46 views
0

我在搜索功能中搜索頁面上很多div的多個數據屬性。以下是我爲此工作的代碼。我遇到的問題是,它似乎只搜索第一個字每個數據屬性,除了最後一個通過多個數據屬性進行搜索

var filter = $(this).val(); 
var regExPattern = "gi"; 
var regEx = new RegExp(filter, regExPattern); 
$(".box").each(function(){ 
    if (
     $(this).data('attr1').search(regEx) && 
     $(this).data('attr2').search(regEx) && 
     $(this).data('attr3').search(regEx) && 
     $(this).data('attr4').search(regEx) < 0 
    ) 
    { 
     //Do Something 
    } 
    else 
    { 
     //Do Something else 
    }   
}); 

我已經把一個fiddle that replicates this problem here.

我試着搜索的不同組合......如把所有的數據屬性到一個數組,然後通過一個搜索元素之一,但這需要沿着時間完成。

如果有人能幫助我,我將不勝感激?

+0

你爲什麼只檢查搜索索引'attr4'爲-1,而不是爲別人? – Bergi

+0

@Bergi我認爲&&將包括所有4個數據屬性...它所做的,但是對於前3個屬性,它只匹配第一個單詞,如果它被一個空格分開,它忽略它從搜索中,如我的小提琴。 – dev

回答

1

您的狀況令人困惑。 .search()返回匹配的索引或-1。所以只有當在字符串開頭找到正則表達式時,它纔會產生一個錯誤值(0),否則就會產生一個真值。因此,將其更改爲

$(this).data('attr1').search(regEx) < 0 && 
    $(this).data('attr2').search(regEx) < 0 && 
    $(this).data('attr3').search(regEx) < 0 && 
    $(this).data('attr4').search(regEx) < 0 

或者,因爲你並不需要的位置,切換到regEx.test()

+0

好吧我還是相當新的,所以如果可能的話請你能提出一個更好的解決辦法嗎? – dev

+0

基本上我有一個擁有6個獨特屬性的頁面上有200多個div ..我需要爲每個div搜索所有6個div屬性。我添加的東西似乎工作正常,除非任何數據屬性(減去最後一個)都有空格。 – dev

+0

跆拳道我發誓我試過了,它沒有工作......但只是試了一遍,它的工作原理!我很困惑,但謝謝你:) – dev