2013-10-18 82 views
0

我試圖從jQuery調用JavaScript函數。當我嘗試將參數傳遞給JavaScript函數:未捕獲的錯誤:語法錯誤,無法識別的表達式:'.b-brand-box'

var brandRcObj = "b-brand-box"; 

$('.b-brand-box').on('mouseleave', function(){ 
    brandOn(brandRcObj); 
}); 

我收到以下錯誤:

"Uncaught Error: Syntax error, unrecognized expression: '.b-brand-box'" 

我這樣做,因爲我會在我的項目使用相同的mouseleave事件多次。所以我想寫一個JavaScript函數如下:

function brandOn(brandClass){ 

    var classObj = "'" + "." + brandClass + "'"; 
    var imgObj = "'" + "." + brandClass + " " + "img" + "'"; 

    $(classObj).css({ 
    backgroundColor: 'white', 
    opacity: 1 
    }); 
    $(imgObj).css({ 
    opacity: 1 
    }); 
} 

感謝您的幫助!

+0

您顯示的代碼中的錯誤是什麼? – dezman

+0

Robert,它說jquery-1.10.1.js:1924(Sizzle)。當我調試它時,我發現在我的javascript函數中行後面沒有工作:「$(classObj).css」。 – curiozity

回答

1

'.b-brand-box'不是有效類選擇器 - .b-brand-box是。

你把單引號括起來,你要動態生成的價值,儘管不應該有任何 - 你誤以爲在JavaScript 語法文字文本其實際字符串符號

'.b-brand-box'是文本的文字在JavaScript代碼".b-brand-box"會寫它的另一個有效方法的符號。然而,源代碼解析後的這兩個字符串的只是.b-brand-box

你真正想要的是隻是簡單

"." + brandClass; 

,僅此而已。

+0

非常感謝你CBroe!這工作!我會牢記這一點。 – curiozity

0

你並不需要所有的報價,那就是你有:

var classObj = "'" + "." + brandClass + "'"; 
var imgObj = "'" + "." + brandClass + " " + "img" + "'"; 

所有你需要的是

var classObj = "." + brandClass; 
var imgObj = "." + brandClass + " " + "img"; 

譯員知道你有一個字符串

+0

不知道,因爲你當然是對的(我基本上回答同樣的事情)。從我+1。 – CBroe

+0

@Croro有人可能雖然我的第一塊代碼是我的答案,謝謝 – dezman

+0

謝謝羅伯特!修復它 – curiozity

相關問題