2013-03-25 2 views
0

у меня есть этот простой load запрос:Как использовать jquery load() как событие без блокировки?

$('#test').load('/sidebar/test/format/html').css("display","block"); 

вопрос является то, что хром показывает запрос имеет 1,2 сек blooking.

я имею в виду использование $.when:

var test = $('#test'); 
$.when(test.load('/sidebar/test/format/html')).done(function(){ 
    test.css("display","block"); 
}); 

, но это не похоже на работу.

любые идеи?

+1

так что вы хотите, чтобы это было асинхронным? потому что .load - это только сокращенный метод для .ajax, который уже является асинхронным и не должен блокироваться. что-то еще ваша проблема, если она блокирует. – iAmClownShoe

+3

'$(). Load (' не блокирует. –

+0

@KevinB, я считаю, но почему-то хром говорит, что это – Patrioticcow

ответ

2

Я считаю, что вы хотите, чтобы просто использовать функцию обратного вызова, как определено в the docs:

var test = $('#test'); 
test.load('/sidebar/test/format/html', function(){ 
    test.css('display','block'); 
}) 
+0

успех, спасибо всем. Это, кажется, устраняет проблему блокировки – Patrioticcow

+0

Один незначительный момент разъяснения; что вы слегка недопонимаете, что означает «блокировка». Эта функция не блокирует, что означает, что любой код, поставленный после того, как он будет выполнен немедленно. Поскольку он не блокируется, и все же вы хотите, чтобы что-то произошло, когда код заканчивается, вы используете то, что называемый обратным вызовом. Это похоже на то, что вы вызываете нагрузку и говорите «хорошо, приятель, вы уходите и делаете свое дело, и когда вы закончите, сделайте это другое. Теперь, когда я начал вас, я просто буду двигаться дальше и сделайте остальную часть моего кода и верьте, что вы вызовете свой обратный вызов, когда закончите ». Имеет ли это смысл? – Hamms

1

По какой-то причине .load не реализует Отложенные, поэтому вы не можете связать метод .done с ним. Однако в этой ситуации вам не нужно использовать .load.

$.get('/sidebar/test/format/html').done(function (html) { 
    $("#test").html(html).show(); 
}); 
Смежные вопросы