2015-02-23 2 views
1

У меня есть много дивы, как следующий рендеринг на той же странице:Выберите Детский ByClassName Javascript

<div class="contentUser"> 
    <div class="innerContent"> 
     Some data 
    </div> 

    <div class="contentButtonWrap"> 
     Some buttons 
    </div> 
</div> 

мне нужно, чтобы вызвать изменение стиля на «contentButtonWrap», когда «contentUser щёлкнули».

Я не знаю, как я могу выбрать дочерний элемент определенного имени класса. Обратите внимание, что количество элементов, которые могут быть отображены в «contentUser», изменяется от div (contentUser) до div. Но в «ContentUser» есть только один элемент «contentButtonWrap».

Это то, что у меня есть:

function avoidHover() { 
    var userDivs = document.getElementsByClassName('contentUser'); 
    [].forEach.call(userDivs, function(e){ 
     e.click = function(){ 

      var target = e.getElementsByClassName('contentButtonWrap'); 
      target[0].style.backgroundColor='green'; 
      }; 
    }); 
}; 
+0

Вы считаете, используя JQuery, это было бы очень легко с ним –

+1

Нет, я хочу, чтобы решение было чистым JavaScript –

+5

Я полагаю, вы хотите использовать 'e.onclick'? Btw, лучше назовите эту переменную 'el', так как' e' обычно используется для событий. – Bergi

ответ

0

Вот мое взятие на него: http://jsfiddle.net/cdL51w2g/

function avoidHover() { 
    var userDivs = document.getElementsByClassName('contentUser'); 

    for(var i=0; i<userDivs.length; i++){ 
     userDivs[i].onclick = function(){ 
      var target = this.getElementsByClassName('contentButtonWrap'); 
      target[0].style.backgroundColor='green'; 
     }; 
    } 
}; 

Я изменил способ доступа детей в родительской div и использовали функцию onclick вместо click в вопросе.

+0

@ Даниэль Уильямс - Большое спасибо. У меня была проблема с правописанием (нажмите вместо onclick). Мой способ работает так же, как и ваш. Любая причина для того, чтобы зациклиться на моем? –

+0

Нет особой причины. Больше привычки, я думаю .. –

1

"onclick" вместо "click". К сожалению об этом ... не

function avoidHover() { 
    var userDivs = document.getElementsByClassName('contentUser'); 
    [].forEach.call(userDivs, function(e){ 
     e.onclick = function(){ 

      var target = e.getElementsByClassName('contentButtonWrap'); 
      target[0].style.backgroundColor='green'; 
      }; 
    }); 
}; 
Смежные вопросы