Проблема с манипулятором

У меня есть следующая функция 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, но он тоже срабатывает в цикле.

Ответ 1

Вместо этого вы можете использовать mouseenter(), поскольку наведение мыши будет срабатывать при каждом перемещении внутри элемента.

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

или если жить не требуется, просто:

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

MouseOver():

  • При вводе элемента огонь может загореться внутри любых дочерних элементов.

MouseEnter():

  • Будет срабатывать при вводе элемента и только в этот элемент.

Ответ 2

Вы хотите использовать mouseenter