Jquery find() занимает слишком много времени в IE

Я пытаюсь найти HTML внутри DIV в HTML-ответе Ajax:

$j(responseText).find("#my_DIV").html()

Это отлично работает в FF, но IE6, кажется, зависает и вечно ждет завершения find(), есть ли обходной путь для поиска DIV или я что-то делаю неправильно?


person Murtaza Mandvi    schedule 21.08.2009    source источник
comment
как код responseText?   -  person andres descalzo    schedule 21.08.2009
comment
текст ответа кода содержит весь HTML-код внутри него, который был возвращен из ответа AJAX, этот HTML-код имеет ‹DIV id=my_Div›   -  person Murtaza Mandvi    schedule 21.08.2009
comment
текст ответа: ‹br/› ‹br/› ‹HTML›‹br/› ‹br/› .....‹br/› ‹br/› ‹DIV id=my_Div›‹br/› ‹br/›‹ br/› // НЕОБХОДИМЫЙ HTML ПРИСУТСТВУЕТ ЗДЕСЬ ‹br/›‹br/› ‹/DIV›‹br/› ‹br/›‹br/› ...... ‹br/› ‹/HTML›   -  person Murtaza Mandvi    schedule 21.08.2009
comment
к сожалению, я не знал, что вы не можете использовать теги BR в комментариях .... в основном текст ответа имеет целую HTML-страницу, из которой я пытаюсь извлечь свой DIV   -  person Murtaza Mandvi    schedule 21.08.2009
comment
@Murtaza, в следующий раз просто отредактируй свой вопрос.   -  person Samuel    schedule 21.08.2009


Ответы (4)


Я думаю, что проблема связана с функцией jQuery.clean, если вы передадите очень большой HTML-код, у вашего браузера будет много работы, как только jquery придется разобрать всю строку html в узлы dom, как firefox быстрее, чем IE вы заметите проблему только в IE.

person Cleiton    schedule 21.08.2009

Если это вызов ajax, попробуйте сократить ответ. Вы не упоминаете, что вы используете на стороне сервера, но идея состоит в том, что если приходит XMLHttpRequest, вы возвращаете только необходимый фрагмент.

person Andy Gaskell    schedule 21.08.2009

Попробуйте разделить код следующим образом:

var response = $j(responseText);
var div = response.find("#my_DIV");
var html = div.html();

Таким образом, вы сможете точно увидеть, какая часть занимает время. Затем, имея более точную информацию, вы можете отредактировать свой вопрос, чтобы предоставить более подробную информацию.

person John Fisher    schedule 21.08.2009

Я не уверен, использует ли селектор потомков ту же итерацию, что и метод find, но вы можете попробовать следующий код, чтобы увидеть, получите ли вы более быстрые ответы:

$j(responseText+" #my_DIV").html()

См. документацию по селектору потомков.

person Yuval Karmi    schedule 21.08.2009