Это мой первый раз, используя любую форму JavaScript и после нескольких часов тщательной игры с этим кодом я в недоумении. Я не могу быть единственным.
Я пытаюсь создать эффект перехода, который начинается с div, содержащего текст "HOVER". Когда он замалчивается, он расширяет другой текстовый div, скрывая div "HOVER". Когда мышь будет удалена, возвращается "HOVER".
Хотя я действительно думаю, что понял код и работает на JSFiddle (только как JQuery OnLoad), он не будет работать на Tumblr. Я могу получить анимацию, расширяющую зависание, но второй текстовый div не заменит div "HOVER". Разница "HOVER" всегда видна.
Я попытался изменить ссылки src для Tumblr, чтобы распознавать и загружать JQuery, я пытался разместить расширение триггера на теге body (возможно, это было неправильно), и я попытался вставить коды в заголовок, после тега исходного тега и перед тегом закрывающего тела.
Сценарий в моем заголовке:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="http://static.tumblr.com/53unaru/kx3lgzker/jquery-1.3.2.min.js" charset="utf-8"></script>
<script>
$('#descriptiontext1').on('mouseover', function () {
$('#descriptiontext2').show();
$('#descriptiontext1').hide();
});
});
$('#descriptiontext2'').on('mouseout', function () {
$('#descriptiontext1').show();
$('#descriptiontext2').hide();
});
});
</script>
CSS:
#description2 {
z-index: 999;
position:fixed;
text-align:justify;
left:0px;
top:436px;
margin-left:70px;
width: 150px;
height:15px;
padding:1px;
border:1px solid #ccc;
font-family:'brie';
font-size:10px;
background-color: #fff;
overflow-y:none;
overflow-x:none;
opacity:0.9;
filter:alpha(opacity=90);
-webkit-transition: all 1s ease-in-out;
-moz-transition: all 1s ease-in-out;
-ms-transition: all 1s ease-in-out;
-o-transition: all 1s ease-in-out;
transition: all 1s ease-in-out;
}
#description2:hover {
z-index: 999;
position:fixed;
left:0px;
top:355px;
margin-left:20px;
width: 232px;
height:150px;
padding:15px;
-webkit-transition: all 1s ease-in-out;
-moz-transition: all 1s ease-in-out;
-ms-transition: all 1s ease-in-out;
-o-transition: all 1s ease-in-out;
transition: all 1s ease-in-out;
}
#descriptiontext1 {
padding:0px;
text-align: center;
font-family:'brie';
font-size:10px;
-webkit-transition: all 1s ease-in-out;
-moz-transition: all 1s ease-in-out;
-ms-transition: all 1s ease-in-out;
-o-transition: all 1s ease-in-out;
transition: all 1s ease-in-out;
}
#descriptiontext2 {
padding:15px;
font-family:'brie';
font-size:10px;
-webkit-transition: all 1s ease-in-out;
-moz-transition: all 1s ease-in-out;
-ms-transition: all 1s ease-in-out;
-o-transition: all 1s ease-in-out;
transition: all 1s ease-in-out;
display: none;
}
HTML:
<div id="description2">
<div id="descriptiontext1">HOVER</div>
<div id="descriptiontext2">TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN TESTIN</div></div>
Быстрый способ, если вы хотите сделать это заранее, вы можете использовать на прослушивании событий для мыши, мыши и функций для лучшей читаемости и оптимизации. Также вам не нужно использовать js для скрытия и отображения, вы также можете использовать css3.
$('#descriptiontext1').on('mouseover', function () {
$('#descriptiontext2, #descriptiontext1').toggle();
});
$('#descriptiontext2').on('mouseout', function () {
$('#descriptiontext2, #descriptiontext1').toggle();
});
Оберните привязки событий внутри события готовности DOM. Это довольно часто встречается в jQuery и очень важно для устранения проблем с загрузкой.
// once the DOM is ready
$(function(){
$('#descriptiontext1').on('mouseover', function () {
$('#descriptiontext2').show();
$(this).hide();
});
$('#descriptiontext2').on('mouseout', function () {
$('#descriptiontext1').show();
$(this).hide();
});
});
Также обратите внимание, что jQuery поддерживает функцию переключения, которая автоматически обрабатывает/переключает show()
и hide()
. Не протестировали его, но что-то вроде этого может работать для вас, если descriptiontext2
скрыт по умолчанию:
$(function(){
var descriptions = $('#descriptiontext1, #descriptiontext2');
descriptions.on('mouseover, mouseout', function () {
descriptions.toggle();
});
});
head
первым, загружает библиотеку JQuery (+ -100ms). Он продолжает связывать ваши события, ища $('#descriptiontext1')
и 2 (+ -200ms), но эти объекты будут пустыми. Только тогда загружается HTML (+ -300мс). Используя обработчик готовности DOM, привязка вашего события удерживается до тех пор, пока ваш HTML не будет загружен. Только тогда вы можете быть уверены, что объекты найдены.
изменение
$('#descriptiontext1').on('mouseover', function () {
$('#descriptiontext2').show();
$('#descriptiontext1').hide();
});
});
$('#descriptiontext2'').on('mouseout', function () {
$('#descriptiontext1').show();
$('#descriptiontext2').hide();
});
});
к
$.noConflict();
$(function () {
$('#descriptiontext1').on('mouseover', function () {
$('#descriptiontext2').show();
$('#descriptiontext1').hide();
});
$('#descriptiontext2').on('mouseout', function () {
$('#descriptiontext1').show();
$('#descriptiontext2').hide();
});
});
используйте $.noConflict();
потому что вы используете две версии библиотеки jquery
. вы можете увидеть полную документацию здесь