2010-10-25 2 views
2

У меня есть список, как, например:не может получить JQuery .load для загрузки содержимого в DIV

<ul id="yearMenu"> 
    <li>Select a year</li> 
    <li><a href="AJAX/2010PR.html">2010</a> |</li> 
    <li><a href="AJAX/2009PR.html">2009</a> |</li> 
    <li><a href="AJAX/2008PR.html">2008</a> |</li> 
    <li><a href="AJAX/2007PR.html">2007</a> |</li> 
    <li><a href="AJAX/2006PR.html">2006</a> |</li> 
    <li><a href="AJAX/2005PR.html">2005</a></li> 
</ul> 

ниже, чем в другом контейнере это Див:

<div id="tableContent" class="tabWrapp"></div> 

и следующую функцию загрузки :

$("#ul#yearMenu li a").click(function() { 
    var $parent = $(this).parent(); 
    $parent.addClass("selected").siblings().removeClass("selected"); 
    var href = $(this).attr('href'); 
    $("#tableContent").load(href + " #tableContent ", function() { 
    //need to do something here? 
    }); 
}); 

, но все ссылки открываются с другой страницы. что мне нужно сделать, чтобы загрузить это в div #tableContent?

ответ

1

Попробуйте это:

$("ul#yearMenu li a").click(function(event) { 
    var $parent = $(this).parent(); 
    $parent.addClass("selected").siblings().removeClass("selected"); 
    var href = $(this).attr('href'); 
    $.get(href, function(data) { 
    $('#tableContent').html(data); 
    }); 
    event.preventDefault(); 
}); 
+0

Первоначально я использовал выше, добавляя return false(); Однако в IE не работает .load. Я пробовал использовать ваш .get, и он работал отлично. Спасибо чувак. –

+0

после дальнейшего тестирования, я получаю это для работы во всех браузерах, кроме Safari, он не загружает скрипты с загружаемой страницей. Я загружаю таблицу, в которой используются .jquery tablesorter и pagination. Когда я нажимаю ссылку для загрузки другой таблицы, никаких функций JS снова это только в Safari. Я разместил ссылки на JS как на главной странице, так и на странице AJAX, а также на функциях. есть идеи? –

+0

hmm Может быть, вы можете разместить ссылку на свою страницу здесь? вид кода может быть полезным – cambraca

4

Попробуйте добавить

return false; 

до конца вашего "нажмите кнопку" обработчика. Без этого будет выполняться действие по умолчанию для каждого тега <a>.

Было бы еще лучше (безопаснее, некоторые сказали бы), чтобы вызвать .preventDefault() на объекте события:

$('#whatever').click(function(evt) { 
    // ... 
    evt.preventDefault(); 
}); 

Это будет позволять событие пузырь, но предотвратить действие по умолчанию <a>.

+0

отлично работает, спасибо. –

1

Не используйте href для хранения ссылки. используйте пользовательский attr, как «data-link =» http://link.com »'

<li><a data-link="AJAX/2010PR.html">2010</a> |</li> 

поэтому, когда вы нажмете ничего, ничего не произойдет.

В вашем яваскрипта кода, вы получите ссылку с помощью:

$(selector).attr("data-link"); 

Тогда грима А также ссылок, использовать некоторые CSS.

Это просто альтернативный способ, но с «preventDefault()» или «return false» также хорошо работает.

+0

Это будет работать, но это может привести к тому, что сканеры/пауки пропустят ссылки, которые для некоторых сайтов будут проблемой. – Pointy

+0

@Pointy, точно! –

Смежные вопросы