stopImmediatePropagation()不起作用

时间:2014-08-19 05:33:01

标签: jquery

我正在尝试使用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>

2 个答案:

答案 0 :(得分:2)

  1. .bind.live已替换为.on

  2. 将返回false移至SetMentionTrigger onclick="SetMentionTrigger(); return false"之后或更好:在load事件中指定并使用e.preventDefault()

  3. 为链接指定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()