[jquery] jquery 라이브 호버

다음 jquery 코드를 사용하여 마우스로 가리키고있는 테이블 행에 대해서만 컨텍스트 삭제 버튼을 표시합니다. 이것은 작동하지만 js / ajax로 즉시 추가 된 행에는 적용되지 않습니다 …

라이브 이벤트로이 작업을 수행 할 수있는 방법이 있습니까?

$("table tr").hover(
  function () {},
  function () {}
);



답변

jQuery 1.4.1은 이제 live () 이벤트에 대해 “호버”를 지원하지만 하나의 이벤트 핸들러 함수 만 사용합니다.

$("table tr").live("hover",

function () {

});

또는 mouseenter 용과 mouseleave 용의 두 가지 기능을 제공 할 수 있습니다.

$("table tr").live({
    mouseenter: function () {

    },
    mouseleave: function () {

    }
});


답변

$('.hoverme').live('mouseover mouseout', function(event) {
  if (event.type == 'mouseover') {
    // do something on mouseover
  } else {
    // do something on mouseout
  }
});

http://api.jquery.com/live/


답변

.live() jQuery 1.7부터 사용되지 않습니다.

.on()대신 사용하고 자손 선택기를 지정 하십시오.

http://api.jquery.com/on/

$("table").on({
  mouseenter: function(){
    $(this).addClass("inside");
  },
  mouseleave: function(){
    $(this).removeClass("inside");
  }
}, "tr");  // descendant selector


답변

jQuery 1.4.1부터는 호버 이벤트가 작동합니다 live(). 기본적으로 mouseenter 및 mouseleave 이벤트에 바인딩되며 1.4.1 이전 버전에서도 수행 할 수 있습니다.

$("table tr")
    .mouseenter(function() {
        // Hover starts
    })
    .mouseleave(function() {
        // Hover ends
    });

이것은 두 개의 바인딩이 필요하지만 잘 작동합니다.


답변

이 코드는 작동합니다 :

    $(".ui-button-text").live(
        'hover',
        function (ev) {
            if (ev.type == 'mouseover') {
                $(this).addClass("ui-state-hover");
            }

            if (ev.type == 'mouseout') {
                $(this).removeClass("ui-state-hover");
            }
        });


답변

경고 : 호버의 라이브 버전에서는 성능이 크게 저하됩니다. IE8의 큰 페이지에서 특히 눈에.니다.

AJAX와 함께 여러 수준의 메뉴를로드하는 프로젝트를 진행하고 있습니다 (이유에는 이유가 있습니다). 어쨌든, 나는 크롬에서 잘 작동하는 호버에 라이브 방법을 사용했습니다 (IE9는 괜찮 았지만 훌륭하지는 않았습니다). 그러나 IE8에서는 메뉴가 느려졌을뿐만 아니라 메뉴가 떨어지기 전에 몇 초 동안 마우스를 가져 가야했지만 스크롤 및 간단한 확인란 확인을 포함하여 페이지의 모든 것이 느려졌습니다.

로드 된 이벤트를 직접 바인딩하면 적절한 성능이 얻어졌습니다.


답변