我正在尝试使用stopImmediatePropagation
停止两次按下按钮。 stopImmediatePropagation
效果不佳,我不知道在向文本添加一个数据后如何从div中删除。我的代码如下:
<style type="text/css">
.display_box { background-color:white; color:Black;}
.active { background-color:blue;}
.display_box.active { background-color:blue;}
</style>
<script type="text/javascript">
//add dynamic data
$(document).ready(function () {
var flag;
$("#<%=TextBox1.ClientID %>").bind("keydown", function (e) {
var showText = '';
if (!flag) {
showText += "<div class='display_box'>content1</div>";
showText += "<div class='display_box'>content2</div>";
showText += "<div class='display_box'>content3</div>";
showText += "<div class='display_box'>content4</div>";
showText += "<div class='display_box'>content5</div>";
$('#display').html(showText).show();
flag = true;
}
//click event
var itemClick = $('#display').find('.display_box');
$('.display_box').hover(function () {
var li = $(this);
li.addClass('active');
}, function () {
var li = $(this);
li.removeClass('active');
});
$('.display_box').live('click', function (e) {
e.preventDefault();
var contents = $("#<%=TextBox1.ClientID %>").val();
if (contents != '') {
var last = contents.slice(0, 0);
var result = $(this).text();
$("#<%=TextBox1.ClientID %>").focus().val(contents + result);
}
$('#display').hide();
bl = false;
flag = false;
e.stopImmediatePropagation();
});
});
$("#<%=TextBox1.ClientID %>").bind("keyup", function (e) {
var $activeslide = $('.display_box.active');
var targetslide = null;
if (e.keyCode == 40) {
if ($activeslide.next('.display_box').length) {
targetslide = $activeslide.next('.display_box');
} else {
$('.display_box').first().addClass('active');
targetslide = $('.display_box:first');
}
}
if (e.keyCode == 38) {
if ($activeslide.prev('.display_box').length) {
targetslide = $activeslide.prev('.display_box');
} else {
targetslide = $('.display_box:last');
}
}
if (e.keyCode == 13) {
alert("enter");
//itemClick.click();
}
if (e.keyCode == 8) {
}
if (targetslide) { targetslide.addClass('active'); }
$activeslide.removeClass('active');
});
});
function SetMentionTrigger() {
$("#<%=textbox1.ClientID %>").append('@');
var text = $("#<%=textbox1.ClientID %>").text();
}
<form id="form1" runat="server">
<div>
<asp:TextBox runat="server" ID="textbox1" ></asp:TextBox>
<a href="javascript:return(false);" onclick="SetMentionTrigger();">Add</a>
</div>
</form>
答案 0 :(得分:2)
.bind
和.live
已替换为.on
将返回false移至SetMentionTrigger onclick="SetMentionTrigger(); return false"
之后或更好:在load事件中指定并使用e.preventDefault()
为链接指定ID
$("#<%=Link1.ClientID %>").on("click", function (e) {
e.preventDefault()
SetMentionTrigger();
});
要将事件处理程序附加到动态创建的项目,您需要
$('#display').on("click",".display_box",function() {
...
});
$('#display').on("hover",".display_box",function() {
...
});
答案 1 :(得分:0)
返回false;正在工作而不是stopImmediatePropagation()