我得到了这个代码
<div class="col-lg-12 video-meta">
<div class="container">
<span class="views"><i class="far fa-eye"></i>{{ Counter::show('post', $post->id) }}</span>
<span class="lnd">
<a class="like" href="#"><i class="far fa-thumbs-up"></i></a>
<a class="like" href="#"><i class="far fa-thumbs-down"></i></a>
</span>
并且我将其定位为
$('.like').on('click', function(event) {
event.preventDefault();
var isLike = event.target.previousElementSibling == null;
console.log(isLike);
,并且在两种情况下都返回“ true”,为什么?是否有一个原因?我已经连续使用了4个小时,并且可以正常工作了一次,我只是休息了一会儿,没有做任何改变,但是休息后它还是没工作?我认为这是个坏笑话。我在这里想念什么?
它基本上应该采用“ like”类,并且作为第一个标签没有null的previousSiblingElement,它应该返回true,但是第二个标签具有与同级标签相同的元素,并且仍返回true。
答案 0 :(得分:2)
event.target
是<i>
元素,因为这是真正发生点击的元素。
如果要使用<a>
(在其上附加了事件处理程序),则需要请求event.currentTarget
甚至只请求this
:
$('.like').on('click', function(event) {
event.preventDefault();
console.log(event.target); // <i>
var isLike = event.currentTarget.previousElementSibling == null;
console.log(isLike);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="col-lg-12 video-meta">
<div class="container">
<span class="lnd">
<a class="like" href="#"><i class="far fa-thumbs-up">a</i></a>
<a class="like" href="#"><i class="far fa-thumbs-down">b</i></a>
</span>
</div>
</div>