我的聊天室代码有以下部分:
HTML
<div class="list-group">
<a class="list-group-item" id="1" href="#">Group A</a>
<a class="list-group-item" id="2" href="#">Group B</a>
<a class="list-group-item" id="3" href="#">Group C</a>
<a class="list-group-item" id="4" href="#">Group D</a>
</div>
<div class="message_box">
<form action="#" class="form">
<div class="form-group"></div>
<div class="input-group">
<textarea class="form-control message_text emojiable-message"
name="message_text" id="message_text" rows="3"></textarea>
<span class="input-group-addon btn btn-primary send_message_btn" name="send_message_btn"
>
Send
</span>
</div>
</form>
</div>
jQuery
$(document).ready(function () {
$('#groups a.list-group-item').on('click', function () {
$(this).toggleClass("active");
$(this).siblings().removeClass("active");
//chage the textarea and btn id to single user.
$('.send_message_btn').removeAttr('id');
$('.send_message_btn').attr('id', 'send_to_topic');
var selected_group_id = this.id;
//Handle enter key press and mouse click (group)
$('#send_to_topic').click(function(e) {
alert(selected_group_id);
//sendChatMessage(selected_group_id);
return false;
});
$('#message_text').keydown(function(e) {
if (e.keyCode == 13) {
alert(selected_group_id);
//sendChatMessage(selected_group_id);
return false;
}
});
$(this).removeClass('active');
$(this).removeAttr('id');
});
});
问题是,当我选择多个列表组项目,然后点击发送按钮时,alert(selected_group_id);
会打印我选择的所有项目的 ID。我只想选择要在 sendChatMessage(selected_group_id);
中使用的最后一个选定项目。如果有人能指出哪里出了问题那就太好了。谢谢。
Edit. The main problem is when I hit send the message gets delivered in duplicates (number of all list-group-item ids I had selected before sending). If I just select one group and send the message does not duplicate (which is okay.).
最佳答案
稍微修改了你的 HTML 和 JS 代码,它在这里工作。请看一下。
$(document).ready(function() {
$('a.list-group-item').on('click', function() {
$(this).toggleClass("active");
$(this).siblings().removeClass("active");
});
//Handle enter key press and mouse click (group)
$('#send_to_topic').click(function(e) {
var selected_group_id = $(".list-group .active").attr("id");
alert(selected_group_id);
return false;
});
$('#message_text').keydown(function(e) {
if (e.keyCode == 13) {
var selected_group_id = $(".list-group .active").attr("id");
alert(selected_group_id);
//sendChatMessage(selected_group_id);
return false;
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div class="list-group">
<a class="list-group-item" id="1" href="#">Group A</a>
<a class="list-group-item" id="2" href="#">Group B</a>
<a class="list-group-item" id="3" href="#">Group C</a>
<a class="list-group-item" id="4" href="#">Group D</a>
</div>
<div class="message_box">
<form action="#" class="form">
<div class="form-group"></div>
<div class="input-group">
<textarea class="form-control message_text emojiable-message" name="message_text" id="message_text" rows="3"></textarea>
<span class="input-group-addon btn btn-primary send_message_btn" name="send_message_btn" id="send_to_topic">
Send
</span>
</div>
</form>
</div>
关于javascript - 为什么这会保留列表组项目上 ('click' )之后先前单击的 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38263783/