2011-08-03 114 views
0

對不起,標題的錯誤措辭,但這是我的問題。假設我有,每一個項目都有一個類的列表:jQuery + JS計算選擇器

<ol> 
    <li class="chapter">Chapter 1</li> 
    <li class="chapter">Chapter 2</li> 
... 

我要選擇一個對應於使用戶的當前章節,由JavaScript衆所周知,在大膽的項目。因此,如果用戶是在第2章我會做這樣的事情:

$(".chapter:eq(2)").css("font-weight", "bold"); 

但我不能做

$(".chapter:eq("+currentChapter+")").css("font-weight", "bold"); 

,因爲它給了我未捕獲SyntaxError: Unexpected identifier

任何幫助,將不勝感激。

編輯:我正在使用模板來插入變量,但我已驗證currentChapter事實上已定義,我希望它是數字。

function fetchContent(startSlide) {ldelim} 
    var chapterSize = {$chapterSize}; 
    var currentChapter = {$chapter}; 
    var chapterName = "{$chapterName}"; 

    alert(typeof(currentChapter)); // number 
    alert(currentChapter); //e.g. 3 works 
    alert(currentChapter + "aaa"); //e.g. 3aaa 
    $(".chapter:eq("+currentChapter+")").css("font-weight", "bold"); // doesn't work 
+1

什麼是'currentChapter'? – SLaks

+0

這是一個數字。 (我在後面的代碼中通過函數驗證了這一點) –

+3

它提供了'currentChapter'定義,它看起來應該可以正常工作:http://jsfiddle.net/S7WHk/ –

回答

1

嘗試了不同的方法,獲取所有的元素,然後只選擇你想要的(我知道這是最好的就在選擇器選擇你的元素,但只是嘗試一下)。

$(".chapter").eq(currentChapter).css("font-weight", "bold"); 

另外,在看你的代碼,它似乎像currentChapterfetchContent函數內部的局部變量。你確定你可以在調用jQuery函數時訪問該變量嗎?嘗試在調用導致問題的jQuery函數之前檢查變量currentChapter的存在性和值。

EDIT

從jQuery文檔jQuery :eq() selector

因爲:當量()是一個jQuery擴展且不部分CSS 說明書,使用查詢:當量()不能利用的由原生DOM querySelectorAll()提供的 性能提升方法。爲了在現代瀏覽器中獲得更好的性能,請使用 $(「your-pure-css-selector」)。eq(index)。

+0

你的方法似乎正在工作。至於你的問題,看看我更新的代碼。 –

+0

alert(typeof(currentChapter));檢查變量的類型,如果它不是一個字符串或數字,它可能會導致問題。你也可以嘗試強制它是一個字符串像$(「。chapter:eq(」+ currentChapter.toString()+「)」) –

+0

這是一個數字(添加了我以前編輯的代碼) –