Всё, вроде разобрался, после того как свершилось событие click true изменилось на false и произошло действие fadeOut, а после этого если кликнем ещё раз false изменится на true и произойдёт действие fadeIn.
Но назначение return false мне не очень понятно, а его закомментировал, скрипт прекрасно выполняется. |
Всё, вроде разобрался, после того как свершилось событие click true изменилось на false и произошло действие fadeOut, а после этого если кликнем ещё раз false изменится на true и произойдёт действие fadeIn.
Но назначение return false мне не очень понятно, я его закомментировал, скрипт прекрасно выполняется. |
Цитата:
|
Да точно, я такое видел событие click вешали на ссылку для того чтоб валидно было открывать страницу в новом окне, я не совсем сначала это понимал, но походу разницу в написании target="blank" и target="_blank" пытались компенсировать js.
Других причин для этого я не вижу, для изменения стиля ссылки легче использовать css a:hover и a active |
$('#formHide').click(function() {
$('#my_form').toggle("slow"); ($(this).text()=='Развернуть')?$(this).t ext('Cвернуть'):$(this).text('Развер уть'); }); |
Akella79,
У меня версия jquery-1.9.1, там метод .toggle не работает, приходится использовать конструкцию со state:
$(function(){
var state = true;
$('#gallery_1').click(function(){
if(state){
$('#gallery').show('slide', 1000, function(){
$('#gallery_1').attr('value','Скрыть галерею')
});
}
else{
$('#gallery').hide('explode', 1000, function(){
$('#gallery_1').attr('value','Показать галерею')
});
}
state = !state;
})
});
Это лучший метод решения данного вопроса, взял его из http://jqueryui.com/animate/ |
Версия *! jQuery v1.10.2
В версии jquery-1.9.1 должно тоже работать, там синтаксис самой функции немного поменялся, http://api.jquery.com/toggle/ fadeOut FadeIn не нужно прописывать, toggle сама это делает, вот пример
$('#clickme').click(function() {
$('#book').toggle('slow', function() {
// функция по завершению анимации
//тут можно прописать смену атрибутов т.е Показать/скрыть
});
});
первый параметр скорость сворачивания/ разворачивания |
Тогда уж лучше сразу так написать
$('#formHide').click(function(){ if ($('#formHide').text() == 'Свернуть форму'){ $('#my_form').slideUp(1000); $(this).text('Развернуть форму')} else { $('#my_form').slideDown(1000); $(this).text('Свернуть форму');} }); Тут хоть время выполнения эффекта задать можно. Да испортили разработчики toggle. |
$('#clickme').click(function() {
$('#book').toggle('slow', function() { // функция по завершению анимации //тут можно прописать смену атрибутов т.е Показать/скрыть }); }); Тогда показать/скрыть применится к $('#book'), а как я понимаю надо бы к $('#clickme') |
Еще можно сделать так, вставьте код ниже в jquery и toggle будет работать, как раньше
jQuery.fn.toggle = function( fn, fn2 ) {
// Don't mess with animation or css toggles
if ( !jQuery.isFunction( fn ) || !jQuery.isFunction( fn2 ) ) {
return oldToggle.apply( this, arguments );
}
// migrateWarn("jQuery.fn.toggle(handler, handler...) is deprecated");
// Save reference to arguments for access in closure
var args = arguments,
guid = fn.guid || jQuery.guid++,
i = 0,
toggler = function( event ) {
// Figure out which function to execute
var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
// Make sure that clicks stop
event.preventDefault();
// and execute the function
return args[ lastToggle ].apply( this, arguments ) || false;
};
// link all the functions, so any of them can unbind this click handler
toggler.guid = guid;
while ( i < args.length ) {
args[ i++ ].guid = guid;
}
return this.click( toggler );
};
|
| Часовой пояс GMT +3, время: 14:30. |