2015-06-29 31 views
0

我有這樣的代碼:如何將DOM引用轉換爲jQuery選擇器?

 // Mark all menu items inactive 
     $(".sidebar-nav li").removeClass(); 

     // Mark current memu item active 
     event.currentTarget.className = "active"; 

在此之前,我曾經有過這樣的代碼:

 $(".sidebar-nav li").css("background", "#383B4C"); 
     event.currentTarget.style.background = "#292B3C"; 

看到這個模式?這兩個示例中的第一行是一個jQuery選擇器,因此使用了jQuery方法;第二行是一個DOM引用,所以沒有jQuery。所以語法是不同的,即使動作是相同的。

對我而言,這是一種代碼味道。我想既可以採用jQuery方式,也可以採用非jQuery方式,以使它們看起來相似。有沒有一種乾淨簡潔的方法來完成其中之一或兩者?

回答

1

jQuery的方式

event.currentTarget$(...)

$(".sidebar-nav li").removeClass(); 
$(event.currentTarget).addClass("active"); 

$(".sidebar-nav li").css("background", "#383B4C"); 
$(event.currentTarget).css('background', "#292B3C"); 

JavaScript的方式

使用querySelectorAll,使您的生活更輕鬆

var lis = document.querySelectorAll(".sidebar-nav li"); 
    for (var i = 0; i < lis.length; i++) { 
     lis[i].className = ''; 
    } 
    event.currentTarget.className = "active"; 

    for (var i = 0; i < lis.length; i++) { 
     lis[i].style.background = '#383B4C'; 
    } 
    event.currentTarget.style.background = "#292B3C"; 
+0

我覺得自己很蠢。我不知道你可以做到這一點。謝謝! – Ruby

+1

你忘記了'querySelectorAll()' – SLaks

+0

@SLaks,謝謝你的建議 – AmmarCSE

1

您可以通過一個DOM元素的jQuery:

$(event.currentTarget) 
1

包裝用jQuery選擇當前的目標將其轉換爲一個jQuery對象

$(event.currentTarget).addClass('active') 
$(event.currentTarget).css('background', '#292B3C')