我正在制作邀请系统。我正在使用ajax加载搜索结果列表。当点击li时,我将用户的id推入一个数组,并在li上添加一个复选标记,让他们知道它们已被添加到列表中。
最后,当我再次搜索(重新调用ajax)时,它会删除附加的复选标记。有没有办法使用javascript来存储哪个用户点击并在搜索其他名称时保留附加的复选标记?
(^当我用ajax加载结果时我检查一个人是否被邀请在我的数据库中我可以这样做,所以如果他们已被邀请点击将从表中删除..如果没有点击我插入与ajax和setTimeout成功..你觉得这样做会不好吗?)
以下是我的html&&脚本
HTML
<li class='inviteUser'>
<img src='$usersProfilePhoto' alt=''>
<h2>$usersname</h2>
<input type='hidden' value='$otherUserID'>
<span></span>
</li>
$(function(){
var inviteList = new Array();
$(document).on('click', '.inviteUser', function(){
var inviteUserID = $(this).children('input').val();
inviteList.push(inviteUserID)
$(this).children('span').append("<p class='remove'>✓</p>");
if(inviteList.length > 0) {
document.getElementById('imcSubmitButton').disabled = false;
$('#imcSubmitButton').css({'opacity':'1'});
} else {
document.getElementById('imcSubmitButton').disabled = true;
$('#imcSubmitButton').css({'opacity':'0.25'});
}
});
$(document).on('click', '.remove', function() {
inviteList.splice($(this).index(), 1);
$(this).remove();
});
});
答案 0 :(得分:1)
问题是inviteList
中的索引与HTML中的索引不对应。您应该在inviteList
中搜索包含此项目的userID的元素,并将其拼接出来。
$(document).on('click', '.remove', function() {
var userid = $(this).parent().siblings("input").val();
var index = inviteList.indexOf(userid);
if (index != -1) {
inviteList.splice(index, 1);
}
$(this).remove();
});
要通过记住邀请的用户来解决您的问题,处理AJAX响应的代码可以使用:
if (inviteList.indexOf(userId) != -1) {
// Add checkmark
}
如果inviteList
是一个对象而不是数组,使用userids作为键,事情会更容易。