2015-07-13 4 views
0

У меня есть несколько div с тем же именем класса, и каждый div имеет несколько элементов (ввод, выбор и ...). Теперь я хочу добавить событие в элемент ввода. как найти индекс div при запуске входного события?получить div с тем же именем класса в angularjs

<div class="container"> 
    <div class='item'> 
      <input type="text" ng-click='test()'> 
      <input type="text" > 
      <input type="text" ng-click='test()'> 
</div> 
<div class='item'> 
      <input type="text" ng-click='test()'> 
      <input type="text" > 
      <input type="text" ng-click='test()'> 
</div> 
    <div class='item'> 
      <input type="text" ng-click='test()'> 
      <input type="text" > 
      <input type="text" ng-click='test()'> 
</div> 
</div> 
+2

почему не и использовать нг-повтор, затем вы можете иметь $ index –

+0

@Nitin Varp да, это правильно, но мое решение для этой проблемы - разница. –

+1

Дивы (или элементы в div, если на то пошло) даже не имеют индекса, чтобы найти, являются ли они просто сырым html. Вам либо нужно вручную добавлять идентификаторы в свои элементы, либо использовать ng-repeat, как предлагал Нитин. Я бы предложил последнего. – Fissio

ответ

0

Учитывая комментарии на исходное сообщение, мое понимание нужной функциональности заключается в следующем: когда пользователь вводит в input элемент, определить div элемент, который является контейнером в input «s, и alert()div элемента class атрибут.

Для того, чтобы сделать это, как я уже сказал в комментарии к вашей записи, вы можете использовать parent() метод JQuery, которая будет возвращать Родительская элемента в качестве объекта JQuery, а затем использовать attr() метод JQuery инспектировать атрибут класса родителя ,

JSFiddle

Если вы используете JQuery:

$(document).on('keyup', '.container input', function() { 
    var $inputElement = $(this); // `this` is the event target 
    var $parentDiv = $inputElement.parent(); 
    var parentClassName = $parentDiv.attr('class'); 
    alert(parentClassName); 
}); 

Если вы не используете JQuery:

var inputElements = document.querySelectorAll('.container input'); 

for(var i = 0; i < inputElements.length; i++) { 
    inputElements[i].addEventListener('onkeyup', function(evt) { 
     var inputElement = evt.target; // access event target using `evt.target` 
     var parentDiv = inputElement.parentNode; // get the event target's parent element 
     alert(parentDiv.className); 
    }); 
} 
Смежные вопросы