2013-07-05 33 views
1

我有一組元素,我正在過濾使用一些鏈接。這些元素具有用於定義在鏈接被點擊時是否應該顯示/隱藏的類。一切正常,但我得到這個錯誤每次點擊:jQuery not()工作,但會拋出'無法識別的表達式'。錯誤

Uncaught Error: Syntax error, unrecognized expression: . jquery.js?v=f7cfcab3b68cbd79eec30032754a6719:3

這件事情與我下面.not()選擇。我已經試過各種替代品(如:not,和包括/不包括單引號和雙引號,但沒有擺脫錯誤的:

var teamFilters = { 
    dept: '', 
    field: '' 
}, filter; 
$('.team-member-filters a').click(function() { 
    var link = $(this); 
    filter = $(this).attr('class'); 
    if (link.parent().hasClass('active')) { 
     link.parent().removeClass('active'); 
     teamFilters[filter] = ''; 
    } else { 
     link.parent().addClass('active').siblings().removeClass('active'); 
     teamFilters[filter] = $(this).attr('id'); 
    } 
    $('.main-body .team-member').animate({opacity: 1}, 250); 
    $('.main-body .team-member').not('.' + teamFilters.dept).animate({opacity: 0.25}, 250); 
    $('.main-body .team-member').not('.' + teamFilters.field).animate({opacity: 0.25}, 250); 

    //console.log(teamFilters.dept); 
}); 

爲被過濾的單個元素的HTML是:

<div class="team-member secretariate reducing"> 
    <div> 
     <img src="/~climatex/files/cache/9d8d7862edc9f22dab5245926f79dace_f52.jpg" width="75" height="75" alt=""> 
     <p class="name">Firstname Lastname</p> 
     <p class="position">Job title</p> 
    </div> 
    <a class="email" href="mailto:[email protected].com">[email protected]</a> 
    <a href="http://www.url.com" target="_blank">www.url.com</a> 
</div> 

'.' + teamFilters.dept選擇拋出錯誤,但因爲一切正常,我不知所措,爲什麼。

我試圖以連接.not()選擇外'.'+teamFilters.dept變量,但它母鹿沒有什麼區別。

我正在運行jQuery 1.7.2。

任何幫助表示讚賞!

+0

您的html似乎主要評論。 –

+0

對不起,這是一個錯誤,編輯 – melat0nin

回答

3

你overquoted。

.not('".' + teamFilters.dept + '"') 

應該

.not('.' + teamFilters.dept) 

當然,teamFilters.dept不會出現永遠從這個定義更改:

var teamFilters = { 
    dept: '', 
    field: '' 
} 

...如果是那樣的話,你會無論如何,最終會有一個無效的選擇器。

+0

更改引用似乎沒有幫助 - 我仍然看到錯誤。 NB teamFilters屬性在'click'事件中設置較早 – melat0nin

+0

您是對的!這是無效的選擇器,因爲它每次都嘗試選擇'teamFilters.dept'和'teamFilters.field',在頁面加載時這兩個都沒有設置,因此錯誤。我已經添加了一個'if'語句來測試它們在嘗試選擇之前是否存在。謝謝! – melat0nin

3

我不認爲你需要有引號,如果你僅僅是要過濾出類:

.not('.' + teamFilters.dept) 
+0

是的,當我按照你所顯示的方式選擇時,它工作,但我仍然看到錯誤。我將編輯OP來反映這一點。 – melat0nin

+0

teamfilters.dept的價值是什麼? – Headshota

+0

我整理出來 - 問題是我試圖選擇每次點擊過濾器,但第一次點擊(根據定義)只定義了兩個過濾器之一,因此錯誤。我通過在嘗試使用它們構造選擇器之前通過測試來確定對象的屬性是否有值。 – melat0nin

相關問題