2014-01-25 4 views
2

Как выбрать элементы DOM в JS? Что эквивалентно синтаксису выбора jQuery's $?Выбор и изменение элементов DOM

Например, у меня есть <div> элемента:

<div id="idDiv">Div Element</div> 

Теперь я хочу, чтобы применить addClass ("ClassName") функцию JQuery на делах. я могу сделать это с JQuery с следующим образом:

$("#idDiv").addClass("ClassName") or jQuery("#idDiv").addClass("ClassName") 

Как я могу это сделать с ванильным JS?

+0

Используйте 'документ. getElementById ("idDiv"). className = "ClassName"; ' – tilda

+0

Я хочу получить объект jQuery. Я буду применять не только функцию addClass. – user3201732

+0

Чтобы получить элемент DOM, сделайте это: var element = document.getElementById ("idDiv"); ' – tilda

ответ

5

Вы можете использовать classList API:

// Adding classes 
document.getElementById('idDiv').classList.add('foo'); 
// Toggling classes 
document.getElementById('idDiv').classList.toggle('foo'); 
// Removing classes 
document.getElementById('idDiv').classList.remove('bar'); 

Пожалуйста, обратите внимание, что IE9 и ниже не поддерживают API, для поддержки этих браузеров вы можете использовать подкладку, MDN имеет one.

Экспериментальное решение:

function jFoo(selector) { 
    return { 
     elems: [].slice.call(document.querySelectorAll(selector)), 
     _handleClass: function (cls, m) { 
      var len = this.elems.length, 
       cls = cls.trim().split(/\s/), 
       clen = cls.length; 
      for (var i = 0; i < len; i++) { 
       for (var j = 0; j < clen; j++) 
       this.elems[i].classList[m](cls[j]); 
      } 
      return this; 
     }, 
     addClass: function (cls) { 
      return this._handleClass(cls, 'add'); 
     }, 
     toggleClass: function (cls) { 
      return this._handleClass(cls, 'toggle'); 
     }, 
     removeClass: function (cls) { 
      return this._handleClass(cls, 'remove'); 
     }, 
    } 
} 

jFoo('selector').toggleClass('foo bar') 
       .addClass('barz fool') 
       .removeClass('foo'); 
+3

необходимо предупредить об IE –

+0

Вы не можете переключать несколько классов. Из спецификации: 'Если сила не указана," переключает "токен, удаляя его, если он присутствует, и добавляет его, если это не так. Если сила истинна, добавляет токен (то же, что и add()). Если сила ложна, удаляет токен (то же, что и remove()). '[DOMTokenList] (http://dom.spec.whatwg.org/#domtokenlist) – Givi

+0

@ Гиви Да, исправил его, спасибо, что упомянул об этом. – undefined

0

Другой способ добавления класса с помощью JavaScript:

document.getElementById("idDiv").className += " ClassName"; 
1

Вы можете получить элемент с помощью JavaScript следующим способом:

var getelem = document.getElementById("idDiv"); 

    getelem.setAttribute("class", "active"); 
Смежные вопросы