Я пытаюсь показать видимость jscrollpane только тогда, когда div зависает, но не работает
вот код
$(document).ready(function(){
$("#scroll").on("mouseenter", function(){
$(this).jScrollPane();
});
$("#scroll").on("mouseleave", function(){
var element = $(this).jScrollPane({});
var api = element.data('jsp');
api.destroy();
});
});
<td width="200">
<div id="scroll" style="height:100px;overflow: auto;width: 100%;">
<p>text -1</p>
<p>text -2</p>
<p>text -3</p>
<p>text -N</p>
</div>
</td>
Проблема в том, что когда вы нападаете на панель прокрутки. Он заменяет ваш оригинальный div исходным содержимым, см. Фрагмент, поэтому зарегистрированное событие больше не работает. Вы можете попробовать использовать делегирование событий.
Фрагмент из панели JScroll, метод уничтожения:
function destroy(){
var currentY = contentPositionY(),
currentX = contentPositionX();
elem.removeClass('jspScrollable').unbind('.jsp');
//See the below line
elem.replaceWith(originalElement.append(pane.children()));
originalElement.scrollTop(currentY);
originalElement.scrollLeft(currentX);
// clear reinitialize timer if active
if (reinitialiseInterval) {
clearInterval(reinitialiseInterval);
}
}
И вам не нужно повторно инициализировать его снова для деструктора, а просто просто получить доступ к data('jsp')
и вызвать на нем уничтожение.
$('table').on("mouseleave","#scroll", function(){ //Attach the event to the closest possible parent
$(this).data('jsp').destroy();
});