2013-07-29 2 views
0

Как упражнение, я пытаюсь сделать мои ссылки в navbar контрактом на контент div, загружать страницу в #content с помощью ajaxpage(), а затем сдвигать ее вниз. Я использую следующее:Замена поведения href click с помощью jquery

EDIT: Я понял, что мне, возможно, понадобилось все в функции обратного вызова, поэтому я исправил это. Однако звонок все еще не работает.

$(document).ready(function() 
    { 
    $("a.link").click(function() { 
    //... 
    return false; 
}); 
    $("#navbar a").click(function(){ 
    $("#content").slideUp(500,function(){ 
     var a_href = $(this).attr('href'); 
     ajaxpage(a_href, 'content'); 
     $("#content").slideDown(500); 
     }); 
    }); 
}); 

С связи бытия:

<a class="link" href="home.php">Home</a> 

Когда я проверить его, ДИВ содержание правильно скользит вверх, но он остается там и ничего не происходит. Что я сделал здесь неправильно?

EDIT: После некоторой отладки, кажется, что это является виновник:

var a_href = $(this).attr('href'); 

Когда я заявляю, что переменные и отправить его через предупреждение(), он говорит, что «не определен». Я предполагаю, что я не хватаю атрибут должным образом, так вот где он висит! Как я должен правильно захватить атрибут href ссылки, которую вы нажимаете?

+1

Ваш вызов AJAX, вероятно, не работает, почтовый индекс для функции 'ajaxpage'. Я также могу сказать, что вызов, вероятно, асинхронный, поэтому ваш «slideDown» должен быть в обратном вызове AJAX. – tymeJV

+0

Да, я просто это исправил! Ajax-вызов работает отлично, так как я могу использовать его в href без сбоев: href = "javascript: ajaxpage ('home.php', 'content')" –

+0

Можете ли вы поделиться html в скрипке? –

ответ

2

Я уверен, что вы действительно хотите захватить href элемента, который был нажат.

$("#navbar a").click(function(){ 
    var a_href = $(this).prop('href'); 
    $("#content").slideUp(500,function(){ 
     ajaxpage(a_href, 'content'); 
     $("#content").slideDown(500); 
    }); 
}); 

Но именно так мы ясны, прежде чем вызов Ajax возвращает какие-либо данные, то $('#content').slideDown(500); собирается сгореть. Вам необходимо добавить обратный вызов в ajaxpage, чтобы принять как функцию успеха $.ajax(), чтобы вы могли определить, когда до slideDown().

0

, когда вы определяете href, вы должны после этого нажать attr().

$("#navbar a").click(function(){ 
    var a_href = $(this).attr('href'); 
    $("#content").slideUp(500,function(){ 
     ajaxpage(a_href, 'content'); 
     $("#content").slideDown(500); 
     }); 
    }); 
Смежные вопросы