【问题标题】:Mouseover event in jQueryjQuery中的鼠标悬停事件
【发布时间】:2011-11-09 07:08:28
【问题描述】:

我有以下mouseover函数:

$('.msg_id').live("mouseover", function() {
    $(this).css('cursor', 'pointer');
    tid = $(this).attr('id');
    idx = $(this).attr('name');
    resp=""; 
    
    $.ajax({
        async: false, 
        url: "log_msg.asp",
        data: $("#msgForm").serialize() + "&aktion=popup&msg_id="+tid+"&msg_id"+idx,
        success: function(data){
            $("#"+tid).html(data);   
        }
        });

    //$.post("log_msg.asp", $("#msgForm").serialize() + "&aktion=popup&msg_id="+tid+"&msg_id"+idx,
        //function(data) {          
          
        //}).success(function(){
            //$("#"+tid).html(data);     
             //resp=data;
             //$('#bub'+tid).css('display', 'block');   
             //popd.css('display', 'block');    
            //});
    });

它将一些 html 代码放入 .msg_id ( $("#"+tid).html(data); )。 函数mouseover 在循环中被调用。 ajax 请求在鼠标悬停时一直发送,而不仅仅是一次。 我该如何解决? 我也试过mouseenter,但它也会循环触发。

【问题讨论】:

  • 我不明白。你为什么要使用mouseover?为什么不click
  • 放入html内容后是不是鼠标光标下发生了什么?
  • 我使用鼠标悬停是因为我希望在鼠标悬停时触发事件,而不是在单击时触发。

标签: javascript jquery mouseover jquery-events


【解决方案1】:

您可能想改用mouseenter() 事件,因为鼠标悬停会在元素内的每一次移动时触发。

$('.msg_id').live("mouseenter", function() {
    //Do work here
});

或者如果不需要直播,只需:

$('.msg_id').mouseenter(function() {
    //Do work here
});

MouseOver():

  • 将在进入元素时触发可以在任何子元素内部触发。

MouseEnter():

  • 将在输入元素时触发,并且仅触发该元素。

【讨论】:

  • 你从哪里得到这些描述的?他们验证了他们实际所做的混乱......
  • 没必要,只是模仿它,因为 OP 在他的现场活动中使用了它。我还将包括一个非实时版本。
  • 啊,没注意到他们用的是live。
  • 描述来自jQuery文档。
  • 是的,他们需要更好的解释,听起来鼠标悬停应该适用于该描述的 OP。
【解决方案2】:

你想使用mouseenter

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    相关资源
    最近更新 更多