2013-11-22 2 views
0

У меня есть этот маленький кусок jQuery для загрузки htm-файла в div после того, как вы наведите указатель мыши на кнопку. Вот как это выглядит:jQuery плавный переход между загрузкой div?

 $(document).ready(function() { 
     $('#webd').mouseenter(function() { 
      $('#opis').load('portfolio/webdDescription.htm'); 
      } 
      ); 
     $('#webd').mouseout(function() { 
      $('#opis').load('portfolio/defaultDescription.htm'); 
      } 
      ); 
    }); 

Есть ли способ сделать эти переходы гладкими? Например, когда вы наводите курсор мыши на кнопку мыши, текст по умолчанию исчезает, а между тем исчезает другой?

+1

Вы можете использовать '.animate()' или '.fadeIn()', '.fadeOut()' –

+0

Я пробовал, где именно его следует поместить? – user2660811

ответ

1

Если вы хотите добавить плавный переход в содержании нагрузки, вы можете добавить fadeIn() и быть что-то вроде этого:

$('#webd').hover(function() { 

    $('#opis').load('portfolio/webdDescription.htm', function(){ 
    $(this).css('opacity',0).stop().animate({"opacity": 1}); }); 

}, 
function(){ 
$('#opis').animate({'opacity' :0}); $('#opis').load('portfolio/defaultDescription.htm', function() { 
    $(this).stop().animate({"opacity": 1}); }); 
} 
); 
+0

Что такое #content? – user2660811

+0

@ user2660811 извините, только что обновленный –

+0

это похоже на то, что я пробовал раньше, он тоже не работает. Он просто мгновенно переключается на другой htm, и все. – user2660811

0

Добавить некоторые HTML-контейнеры для описания по умолчанию и веб, чтобы эти контейнеры невидимыми по умолчанию, загрузить файлы html, затем fadein/out on hover.

UPDATE

Я удалил все старые кода/примеры, это, вероятно, будет работать намного лучше и легче расширить:

$(function(){ 
    var el = $("#opis"); 
    el.load("portfolio/defaultDescription.htm").show(); 
    el.hover(function() { 
     changeText(el, "portfolio/webdDescription.htm"); 
    }, function() { 
     changeText(el, "portfolio/defaultDescription.htm"); 
    }); 
    function changeText(el, source) { 
     el.fadeOut(function() { 
      el.load(source, function() { 
       el.stop().hide().fadeIn(); 
      }); 
     }); 
    } 
}); 
+0

Я пробовал именно код, который вы предоставили, но он не работает. – user2660811

+0

вы правы, исправили его здесь: http://jsfiddle.net/ceGDq/ – Phortuin

+0

woah, спасибо большое.Но я не знаю, нужно ли мне это. У меня есть несколько кнопок (на данный момент я добавлю несколько позже), и когда вы наведете кнопку, это изменит содержимое div, это то, что я получил до сих пор. Теперь я хочу, чтобы переход был мягким. – user2660811

0

Вы можете просто использовать «трюк» чтобы скрыть содержимое, которое вы загрузили, а затем применить эффект jQuery, чтобы показать его.

Нечто подобное:

$(document).ready(function() { 
    $('#webd').mouseenter(function() { 
     $('#opis').load('portfolio/webdDescription.htm'); 
     $('#opis').hide(); 
     $('#opis').show("fade", 200); 
    }); 
    $('#webd').mouseout(function() { 
     $('#opis').load('portfolio/defaultDescription.htm'); 
     $('#opis').hide(); 
     $('#opis').show("fade", 200); 
    }); 
}); 

Должно работать.

+0

Код выглядит красиво, но когда я наводил курсор мыши на кнопку, содержимое defualt исчезает. – user2660811

+0

попробуйте mouseleave вместо mouseout? – Phortuin

+0

нет, это не имело никакого значения – user2660811

Смежные вопросы