Вкладки jQuery с Ajax и статическими элементами div

Я отправляю данные формы на страницу, которая использует вкладки jQuery. Поскольку вы не можете загружать данные сообщения в запрос Ajax (по крайней мере, без тонны дополнительной работы и повышения безопасности), я загружаю активную вкладку как фактический элемент div на странице.

<script type="text/javascript">
    $(document).ready(function () {
        $('#tabs').tabs({ selected: 3 });
    });
</script>

<div id="tabs" style="margin-top: 10px">
    <ul>
        <li><a href="myprofile.php">My Profile</a></li>
        <li><a href="mycompany.php">My Company</a></li>
        <li><a href="manageusers.php">Manage Users</a></li>
        <li><a href="#manageallusers">Manage All Users</a></li>
        <li><a href="manageclients.php">Manage Clients</a></li>
    </ul>
    <div id="manageallusers"></div>
</div>

В приведенном выше примере все вкладки, кроме вкладки «Управление всеми пользователями», вызываются с помощью метода Ajax в функции вкладок jQuery. Другой — просто статический div, уже размещенный на странице. При начальной загрузке это работает прекрасно. Однако, если вы начнете щелкать вкладки Ajax, статический элемент div останется внизу.

В функции tabs() есть обратный вызов load:. Я знаю, что должен использовать это - я просто не совсем уверен, как к этому подойти. Есть мысли, предложения??


person Nathan Loding    schedule 23.07.2009    source источник
comment
Итак, что вы пытаетесь сделать? Статический div НЕ собирается двигаться - он статичен.   -  person Sneakyness    schedule 23.07.2009
comment
Это должно работать нормально. Вкладки пользовательского интерфейса jQuery должны автоматически скрываться и показывать статическую вкладку. Нет никакой реальной разницы между работой с вкладками AJAX и обычными вкладками div.   -  person cdmckay    schedule 23.07.2009
comment
почему публикация в xhr более небезопасна, чем в обычной форме?   -  person redsquare    schedule 23.07.2009
comment
@redsquare: сообщение Ajax в этом сценарии более небезопасно, потому что данные уже были отправлены на страницу, и я снова показываю их либо с ошибкой, либо с подтверждением. Если бы я повторно размещал его с помощью Ajax, все данные публикации нужно было бы записать в JS. @cdmckay: я так и думал, но div не прячется :(   -  person Nathan Loding    schedule 23.07.2009
comment
@Nathan Loding: Это очень странно, потому что я широко использую вкладки пользовательского интерфейса jQuery в своем текущем проекте, и мне не приходилось скрывать их вручную. Единственная возможность, о которой я могу думать, это то, что вы применяете дополнительный CSS к статическому div, из-за которого он не скрывается (или каким-то образом переопределяет механизм скрытия пользовательского интерфейса jQuery).   -  person cdmckay    schedule 23.07.2009


Ответы (1)


$("#tabs").tabs(
        {
            load: function(ui)
            {
                $("#manageallusers").hide();
            }
        });

Это то, что вы бы использовали, если бы пытались скрыть это. Вы, очевидно, могли бы заменить это чем угодно, потому что вы не были очень конкретны в этом.

person Sneakyness    schedule 23.07.2009
comment
@Sneakyness: это то, что я искал. Думаю, я просто слишком много думал об этом. Спасибо! - person Nathan Loding; 23.07.2009
comment
Да отличается мягко говоря. Я использую то же самое, чтобы творить чудеса на www.sneakyness.com. - person Sneakyness; 23.07.2009
comment
Ха! Я также обнаружил опечатку, которая вызывала исключение при определенных условиях, что частично связано с этим. Тем не менее, пришлось использовать этот метод: load: function(event, ui) { if(this.href == '#manageallusers') { $('#manageallusers').show(); } else { $('#manageallusers').hide(); } } - person Nathan Loding; 23.07.2009