我有此代码:
$(document).ready(function(){
$('.laravel-like').on('click','i',function(){
if($(this).hasClass('disabled'))
return false;
alert($("#like").attr("data-item-id"));
alert($("#like").attr('data-vote'));
)}
当我在页面上的i
潜水中单击laravel-like
标签时,它根本不起作用。它甚至没有在控制台中记录任何错误。
但是,当我将'laravel-like'
更改为document
时,它才起作用,但仅当我单击页面上的任何位置时才起作用。我希望它仅在单击i
元素时才起作用在laravel-like
div
这是我的html:
<div class="laravel-like">
<i id="like"
class="icon laravelLike-icon thumbs up"
data-item-id="9"
data-vote="1">
</i>
<span id="9-total-like">1</span>
<i id="dislike"
class="icon outline laravelLike-icon thumbs down"
data-item-id="9"
data-vote="-1">
</i>
<span id="9-total-dislike">0</span>
</div>
请帮助。
答案 0 :(得分:1)
首先,您显示的JavaScript有两个语法错误。
)}
应该是})
})
接下来,您的点击处理程序将设置为仅在i
元素内部的.laravel-like
元素上运行。如果您的i
元素没有任何可见内容可供点击,则click
事件不会触发。在这里,我只是提供了X
作为两个i
元素的内容,如果您单击其中的任何一个,它将起作用。
$(document).ready(function(){
$('.laravel-like').on('click','i',function(){
if($(this).hasClass('disabled'))
return false;
alert($("#like").attr("data-item-id"));
alert($("#like").attr('data-vote'));
})
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="laravel-like">
<i id="like"
class="icon laravelLike-icon thumbs up"
data-item-id="9"
data-vote="1">x
</i>
<span id="9-total-like">1</span>
<i id="dislike"
class="icon outline laravelLike-icon thumbs down"
data-item-id="9"
data-vote="-1">x
</i>
<span id="9-total-dislike">0</span>
</div>