Используя область родительского div

0

В следующем коде на бланке нажмите родительский текст ввода div. Я не понимаю, что означает "использование области родительских divs. Может кто-нибудь, пожалуйста, объясните мне об этой области

HTML

<div class="info">
 <input type="text" placeholder="Email" class="email" value="[email protected]" />
 <button class="btn">Click Me</button>
 </div>

 <div class="info">
 <input type="text" placeholder="Email" class="email" value="[email protected]" />
 <button class="btn">Click Me</button>
 </div>

 <div class="info">
 <input type="text" placeholder="Email" class="email" value="[email protected]" />
 <button class="btn">Click Me</button>
 </div>

 <div class="info">
 <input type="text" placeholder="Email" class="email" value="[email protected]" />
 <button class="btn">Click Me</button>
 </div>

Jquery

$(document).on('click', '.btn', function () {

var $this = $(this).parents('.info');
var email = $('.email', $this).val();

alert(email);

});
  • 0
    в качестве примечания используйте $(this).closest('.info')
  • 0
    Вы уверены, что возможно получить значение 2 элемента, например this $('.email', $this).val(); или это ошибка заклинания $('.email ' $this).val();
Показать ещё 9 комментариев
Теги:
scope

4 ответа

0
Лучший ответ

Из вашего комментария по вопросу:

кто-то дал мне этот код и сказал var email = $ ('. email', $ this).val(); // эта строка использует родительский div как область действия

Их терминология была неправильной, но то, что они пытались сказать, было то, что эта строка:

var email = $('.email', $this).val();

... будут найдены только элементы, соответствующие селектору .email которые являются потомками div внутри $this набора jQuery, а затем получают значение этого элемента.

Эта строка эквивалентна этому:

var email = $this.find('.email').val();

... и на самом деле, если вы используете $(selector, $this), jQuery будет просто поворачиваться и вместо этого делать $this.find(selector).

0
var $this = $(this).parents('.info');
var email = $('.email', $this).val();

email обозначает значение элемента, имеющего класс .email внутри элемента, имеющего класс .info (где $this элемент является родительским элементом нажатой кнопки).

Надеюсь, теперь понятно.

Вы можете обратиться к jQuery для лучшего понимания.

0
// this will bind click event on buttons

$(document).on('click', '.btn', function () {

,

// this traverses the ancestry of that button until it finds an element 
// with a class "info", and then caches that jQuery object in $this

var $this = $(this).parents('.info');

,

// this searches for element with class "email" inside the cached element $this 
// (which is the parent as traversed above)
var email = $('.email', $this).val();

Когда вы находите элемент внутри элемента с использованием синтаксиса $('selector1', 'selector2'), вы находите элемент с "selector1" в области "selector2".

0

Вы можете использовать siblings чтобы получить прямо по электронной почте

$('.btn').on('click', function () {
    var email = $(this).siblings().val();
    alert(email);
});

jsFiddle here

Ещё вопросы

Сообщество Overcoder
Наверх
Меню