2012-01-02 55 views
0

我想知道如果我可以一起使用查詢和JavaScript,所以我可以選擇一個類與JavaScript的元素,然後使用JavaScript來處理該元素。對不起,如果沒有意義。這裏是一個例子:可以將JQuery和Javascript混合在一起嗎?

$('.nav_flag').src = "images/flags/"+userCountryLower+".gif"; 

會這樣的工作,如果不是我怎麼得到一個按類使用普通的JavaScript元素。謝謝!

編輯:我知道jQuery是JavaScript,但我在想,如果我可以混合jQuery選擇和javascript「controller'換一個更好的詞

+6

jQuery *是* JavaScript。 jQuery是一個用JavaScript編寫的庫。 – 2012-01-02 04:38:22

回答

4

要回答你的問題是問,有有幾種方法可以採用jQuery對象,即,$('some selector')返回的內容,並獲取對底層DOM元素的引用。

您可以訪問單個DOM元素像數組元素:

// update the src of the first matching element: 
$(".nav_flag")[0].src = "images/flags/"+userCountryLower+".gif"; 

// if you're going to access more than one you should cache the jQuery object in 
// a variable, not keep selecting the same thing via the $() function: 
var navFlgEls = $(".nav_flag"); 
for (var i = 0; i < navFlgEls.length; i++) { ... } 

但是,你將通過要素沒有手動循環時,您可以使用jQuery's .each() method,並指出,在回調函數中您提供this將被設置到當前的DOM元素:

$(".nav_flag").each(function() { 
    this.src = "images/flags/"+userCountryLower+".gif"; 
}); 

然而,jQuery提供一種方法來設置與一行代碼屬性:

$(".nav_flag").attr("src", "images/flags/"+userCountryLower+".gif"); 

要回答問題的第二部分,在沒有jQuery的情況下做同樣的事情,如果您不關心支持舊瀏覽器,則可以使用.getElementsByClassname().querySelectorAll()

2

使用.attr()的jQuery的損失,而不是在這裏混用兩種。

$('.nav_flag').attr('src', "images/flags/"+userCountryLower+".gif"); 

在許多情況下,它是好的jQuery的與普通的JavaScript搭配,但如果你已經包括jQuery庫,你不妨利用它。除非,就是說,你有一個操作,在jQuery中的操作比普通JavaScript中的操作要昂貴得多。

+0

謝謝!我一直在谷歌上尋找相當一段時間,它沒有給我任何結果。 – 2012-01-02 04:39:43

5

jQuery IS Javascript。你可以將它們混合在一起。但你最好知道你在做什麼。

在這種情況下,您可能需要使用.attr函數來設置屬性的值。

2

您可以用jQuery做到這一點:

$('.nav_flag').attr("src", "images/flags/"+userCountryLower+".gif");

2

記住,jQuery是簡單地在內置的JavaScript庫。

對於任何jQuery對象,通過訂閱選擇其元素將返回相應的dom元素。

例如

$('#foo')[0] // is equivalent to document.getElementById('foo'); 
1

您需要爲jQuery對象添加一個索引以獲取本機JavaScript對象。變化:

$('.nav_flag').src = "images/flags/"+userCountryLower+".gif"; 

要:

$('.nav_flag')[0].src = "images/flags/"+userCountryLower+".gif"; 

要獲得元素的類名在Javascript中你可以使用:

document.getElementsByClassName('nav_flag')[0].src = "images/flags/"+userCountryLower+".gif"; 
0

要回答你的問題,你可以使用.toArray()對jQuery轉換將對象轉換爲標準DOM元素的數組。然後獲取第一個元素或通過數組循環來設置所有類的元素。

但是,你可以這樣做純jQuery的更容易使用attr或道具取決於版本:

$('.nav_flag').attr("src", "images/flags/"+userCountryLower+".gif"); 

或者使用純javascript:

if (navFlagElements = document.getElementsByClassName("nav_flag") && navFlagElements.length > 0) { 
    navFlagElements[0].src = "images/flags/"+userCountryLower+".gif" 
} 
相關問題