#jquery
#jquery
Вопрос:
У меня есть функция обратного вызова следующим образом
$('#lnkClientData').click(function() {
$('#clientdiv').slideToggle(function(){
if($('#lnkClientData').hasClass('open'))
{
$('#divnext').slideToggle();
$('#lnkClientData').removeClass('open').addClass('close');
}
else
{
$('#divnext').slideToggle();
$('#lnkClientData').removeClass('close').addClass('open');
}
}
);
});
Я хочу, чтобы $('#divnext').slideToggle();
код выполнялся перед внешней $('#clientdiv').slideToggle()
функцией….
Прямо сейчас внешняя функция вызывается первой….то, что я пытаюсь сделать, это скрыть привязку, когда div
вставляется … но это происходит до того, как div
вставляется…
if($('#clientDiv').is(':visible'))
{
alert('');
// $('#divnext').hide();
//$('#clientDiv').slideToggle(); // Or whatever animation you want
}
else
{
//$('#clientDiv').slideToggle(function() // Or whatever animation you want
//{
// $('#divnext').show();
//});
}
Комментарии:
1. Можете ли вы поделиться демонстрационной ссылкой на jsfiddle или jsbin?
2. Я сделал то, что вы, ребята, упомянули, но я просто добавил комментарий к первому ответу… я надеюсь, что это прояснит ситуацию….
Ответ №1:
Затем вам просто нужно изменить порядок вашего кода (не зная особенностей вашей реализации slideToggle, я предполагаю, что ваш параметр является обратным вызовом по завершении слайда)
$('#divnext').slideToggle(function()
{
// Code here executes after slide is finished but before clientdiv starts
$('#clientdiv').slideToggle(function()
{
// Code here executes after both slides are done
});
});
Редактировать:
В вашей ситуации просто использовать один метод slideToggle для отображения / скрытия клиентского div — не лучшая идея.
if($('#clientDiv').is(':visible'))
{
$('#yourLink').hide();
$('#clientDiv').slideDown(); // Or whatever animation you want
}
else
{
$('#clientDiv').slideUp(function() // Or whatever animation you want
{
$('#yourLink').show();
});
}
Комментарии:
1. Спасибо … это действительно близко к тому, что я хотел … но теперь, когда внешний div выдвигается …. внутренний div появляется перед открытием div…. позвольте мне объяснить … у меня есть div… и имя привязки «next» внутри div… когда кто-то открывает div… этот следующий якорь должен появиться после открытия всего div, и когда кто-то закрывает div, следующий якорь должен исчезнуть до закрытия div….
2. Затем все, что вам нужно сделать, это изначально скрыть div. Когда clientDiv завершит переключение, просто вызовите
$('#yourLink').show()
orhide()
в зависимости от его видимости.3. Я в замешательстве .. можете ли вы объяснить немного подробнее… основной div — это клиент, и когда он завершает переключение, я должен отобразить или скрыть ссылку … а также, что это скрытие и показ должны быть вне функции обратного вызова переключателя function….am я прав??
4. Я постараюсь связаться с вами, если возникнут какие-либо проблемы …. я добавлю еще один комментарий… но я знаю, что смогу это сделать… Большое спасибо, чувак
5. Смотрите мой вопрос, я собираюсь отредактировать его … я делаю то, что вы сделали после части редактирования ….. но uit, похоже, не выдает предупреждение … пожалуйста, обратитесь к моему коду в вопросе
Ответ №2:
Код code настроен для переключения lnkClientData, затем, когда это будет сделано, переключите clientdiv, если вы поменяете их местами в ie:
$('#divnext').click(function() {
$('#clientdiv').slideToggle(function(){
if($('#lnkClientData').hasClass('open'))
{
$('#lnkClientData').slideToggle();
$('#lnkClientData').removeClass('open').addClass('close');
}
else
{
$('#lnkClientData').slideToggle();
$('#lnkClientData').removeClass('close').addClass('open');
}
}
);
});