2013-01-16 2 views
4

레일즈 애플리케이션에서 pjax를 사용할 때 트위터 부트 스트랩 툴팁 not being removed from the DOM 요소에 몇 가지 문제가있었습니다. 예를 들어, 툴팁으로 요소를 마우스로 이동 한 다음 다른 페이지에 대한 링크를 클릭하면 툴팁이 고정됩니다. 툴팁을 제거하는 현재의 해결책은 다음과 같습니다.pjax를 사용할 때 트위터 부트 스트랩 툴팁을 파괴/숨기기

App.Utils.Tooltip = { 

    triggerAll: function(element) { 
    if (element.data('tooltip-loaded') == true) { return; } 
    element.data('tooltip-loaded', true).tooltip().trigger('mouseover'); 
    }, 

    destroyAll: function() { 
    var tooltips = ($('[rel=tooltip]').get()); 

    $.each(tooltips, function() { 
     $(this).tooltip('destroy'); 
    }); 
    } 

}; 

$(document).on('mouseover', '[rel=tooltip]', function() { 
    App.Utils.Tooltip.triggerAll($(this)); 
}); 

$(document).on('pjax:beforeSend', function() { 
    App.Utils.Tooltip.destroyAll(); 
}); 

더 효율적이고 효과적인 방법이 있습니까?

+0

나에게 적절한 방법처럼 보입니다. –

답변

1

툴팁 플러그인을 사용하면 두 번 인스턴스화하지 않아 검사가 불필요하므로 코드를 다음과 같이 단순화 할 수 있습니다.

App.Utils.Tooltip = { 
    triggerAll: function(element) { 
    element.tooltip('show'); 
    }, 
    destroyAll: function() { 
    $('[rel=tooltip]').tooltip('destroy'); 
    } 
};