当我只有 HTML 字符串 X 时,如何找到最接近的元素?
How can I find closest element when all I have is HTML string X?
我需要使用 onClick(swiper,e)
解决 Swiper JS 中的 link 错误。
swiper
: 是整个swiper-container
e
:是一个 MouseEvent,其中 属性 target
包含 HTML 字符串,例如<div class="start-time">16:00</div>
<div class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide">Slide 1</div>
<div class="swiper-slide">Slide 2</div>
<div class="swiper-slide">
<a href="abc" target="_blank">
<div class="start-time">16:00</div>
<div class="flag"><img ...></div>
<div class="name col-4">Buritos</div>
</a>
</div>
...
</div>
</div>
现在我需要阻止默认的 Swiper 行为,找到 link 并打开一个新的 window。这段代码不工作,但是我想要它的伪代码
onClick: function(swiper, e) {
e.preventDefault();
let target = $(e.target); // HTML is now jQuery
let slide = target.closest('swiper-slide'); //Not working
let link = slide.find('a').attr('href');
window.open(link);
},
当用户单击幻灯片中的任何元素时,我无法找到父元素 swiper-slide
。我以为 target.closest('swiper-slide')
可以解决问题,但事实并非如此。
非常感谢任何帮助。
你可以使用$.parents()
从点击的元素向上遍历不止一层,然后传递一个选择器来找到你想要的,像这样:
onClick: function(swiper, e) {
e.preventDefault();
let target = $(e.target); // HTML is now jQuery
let slide = target.parents('.swiper-slide')[0];
let link = slide.find('a').attr('href');
window.open(link);
},
这应该有效:
onClick: function(swiper, e) {
e.preventDefault();
var hyperlink = $(e.target).closest('a');
window.open(hyperlink.attr('href'));
},
我需要使用 onClick(swiper,e)
解决 Swiper JS 中的 link 错误。
swiper
: 是整个swiper-container
e
:是一个 MouseEvent,其中 属性 target
包含 HTML 字符串,例如<div class="start-time">16:00</div>
<div class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide">Slide 1</div>
<div class="swiper-slide">Slide 2</div>
<div class="swiper-slide">
<a href="abc" target="_blank">
<div class="start-time">16:00</div>
<div class="flag"><img ...></div>
<div class="name col-4">Buritos</div>
</a>
</div>
...
</div>
</div>
现在我需要阻止默认的 Swiper 行为,找到 link 并打开一个新的 window。这段代码不工作,但是我想要它的伪代码
onClick: function(swiper, e) {
e.preventDefault();
let target = $(e.target); // HTML is now jQuery
let slide = target.closest('swiper-slide'); //Not working
let link = slide.find('a').attr('href');
window.open(link);
},
当用户单击幻灯片中的任何元素时,我无法找到父元素 swiper-slide
。我以为 target.closest('swiper-slide')
可以解决问题,但事实并非如此。
非常感谢任何帮助。
你可以使用$.parents()
从点击的元素向上遍历不止一层,然后传递一个选择器来找到你想要的,像这样:
onClick: function(swiper, e) {
e.preventDefault();
let target = $(e.target); // HTML is now jQuery
let slide = target.parents('.swiper-slide')[0];
let link = slide.find('a').attr('href');
window.open(link);
},
这应该有效:
onClick: function(swiper, e) {
e.preventDefault();
var hyperlink = $(e.target).closest('a');
window.open(hyperlink.attr('href'));
},