![](/img/trans.png)
[英]Adding click event using JQuery .on() function fires for every item in list
[英]Removing and adding a class on list item click using jquery?
我有一個帶保存帖子文本的列表項,它有一個save-post
類,當我點擊它時,我想將此列表項的文本更改為unsave post並替換unsave-post類中的類save-post
試圖這樣做,但列表項文本和類的更改只發生一次..
$('.save-post').click(function(){ $(this).text('Unsave Post'); $(this).removeClass('save-post'); $(this).addClass('unsave-post'); }); $('.unsave-post').click(function(){ $(this).text('Save Post'); $(this).removeClass('unsave-post'); $(this).addClass('save-post'); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="col-xs-2 col-sm-2 col-md-2 drop"> <a href=""><i class="fa fa-ellipsis-v post-drop"></i></a> <div class="drop-content"> <ul> <li class="save-post">Save post</li> <li>Report post</li> <li>Hide post</li> <li>Unfollow User</li> </ul> </div> </div>
您可以使用toggleClass()
方法,然后檢查應用的類並附加相應的文本
$(document).on('click', '.save-post, .unsave-post', function(e) { var that = $(e.currentTarget); that.toggleClass('save-post unsave-post'); if (that.hasClass('save-post')) { that.html('Save post'); } else { that.html('Unsave post'); } });
.save-post { color: green } .unsave-post { color: red }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <ul> <li class="save-post">Save post</li> <li class="save-post">Save post</li> <li class="save-post">Save post</li> </ul>
當您使用.click()
,將事件綁定到目標選擇器,但在單擊它后,類更改為另一個。 你應該使用事件委托 。
$(document).on('click', '.save-post', function(){
$(this).text('Unsave Post');
$(this).removeClass('save-post');
$(this).addClass('unsave-post');
});
$(document).on('click', '.unsave-post', function(){
$(this).text('Save Post');
$(this).removeClass('unsave-post');
$(this).addClass('save-post');
});
$(document).on('click', '.save-post', function(){ $(this).text('Unsave Post'); $(this).removeClass('save-post'); $(this).addClass('unsave-post'); }); $(document).on('click', '.unsave-post', function(){ $(this).text('Save Post'); $(this).removeClass('unsave-post'); $(this).addClass('save-post'); });
.save-post {color: red} .unsave-post {color: blue}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="col-xs-2 col-sm-2 col-md-2 drop"> <a href=""><i class="fa fa-ellipsis-v post-drop"></i></a> <div class="drop-content"> <ul> <li class="save-post">Save post</li> <li>Report post</li> <li>Hide post</li> <li>Unfollow User</li> </ul> </div> </div>
使用.click
只會將事件附加到已存在的元素。
您需要使用一個事件處理程序來監視動態創建的點擊事件on('click',
然后,您可以像這樣使用toggleClass
$('.save-post').on('click',function(){ if ($(this).text() == "Save post") $(this).text("Unsave post") else $(this).text("Save post"); $(this).toggleClass('save-post'); $(this).toggleClass('unsave-post'); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="col-xs-2 col-sm-2 col-md-2 drop"> <a href=""><i class="fa fa-ellipsis-v post-drop"></i></a> <div class="drop-content"> <ul> <li class="save-post">Save post</li> <li>Report post</li> <li>Hide post</li> <li>Unfollow User</li> </ul> </div> </div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.