В следующем коде на бланке нажмите родительский текст ввода 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);
});
Из вашего комментария по вопросу:
кто-то дал мне этот код и сказал 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)
.
var $this = $(this).parents('.info');
var email = $('.email', $this).val();
email обозначает значение элемента, имеющего класс .email
внутри элемента, имеющего класс .info
(где $this
элемент является родительским элементом нажатой кнопки).
Надеюсь, теперь понятно.
Вы можете обратиться к jQuery для лучшего понимания.
// 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".
Вы можете использовать siblings
чтобы получить прямо по электронной почте
$('.btn').on('click', function () {
var email = $(this).siblings().val();
alert(email);
});
$(this).closest('.info')
$('.email', $this).val();
или это ошибка заклинания$('.email ' $this).val();