jquery не срабатывает find после ajax
Вложений: 1
Добрый день,прошу помощи тк не знаю в какую сторону копать. Вкратце я хочу получить аяксом страницу с того же домена,выбрать нужный мне блок и вставить его в блок который есть у меня на странице.
вот пример function ajax(){ $.ajax({ url: "http://192.168.1.35/flashtest/test_site/dinosaurs.html", success: function(data, d2, d3){ $('#main').append($(data).find('#main')); }}); } после success в дата я имею нужный документ, но после $(data).find('#main') мне возвращается [] вроде как он такого элемента не находит. Пробовал делать через load вот так function live(){ console.log($('#main').load('http://192.168.1.35/flashtest/test_site/dinosaurs.html #main')); } все отрабатывает правильно как я и хочу Например на сайте http://pjax.heroku.com/ все срабатывает с find нормально, не пойму почему у меня не работает,я даже пробовал подключать их версию жкуери. Прошу помощи никак не могу понять почему это не работает хотя должно. В прикрепленном файле выложу простейший пример. Пока покопаюсь внутри жкуери посмотрю как работают эти функции |
1) надо добавлять к main текст а не пытаться переместить dom элемент из текста в браузер.
function live(){ console.log($('#main').load('dinosaurs.html #main')); } function ajax(){ $.ajax({ url: "dinosaurs.html", success: function(data, d2, d3){ var text=$(data).find("#main").html(); //$('#main').append(text); $('#main').html(text); // эта строка поудачнее так как заменит содержимое, а не добавит }}); } 2) файл dinosavr.html нужно переделать. Помести в динозвре main внутрь другого дива тогда всё будет ок. а иначе он просто не найдёт main. и Body ты кстати забыл. <div> <div id="main"> <ul> <li><a href="/">home</a></li> <li>dinosaurs</li> <li><a href="/aliens.html">aliens</a></li> </ul> <iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/GcjxwXCxBBU" frameborder="0" allowfullscreen></iframe> </div> </div> |
DjDiablo
если бы я хотел добавить текст,то я использовал бы аналог innerHTML для заполнения блока, я хочу добавить именно объект дом append судя по докам http://api.jquery.com/append/ может принимать параметром его contentDOM element, HTML string, or jQuery object to insert at the end of each element in the set of matched elements. я не пытаюсь переместить дом елемент из текста как Вы написали, я же его прогоняю через $(data) значит я на выходе должен иметь dom объект вот в нем я и хочу искать и вставлять Вы пробовали запустить код который написали он не работает аналогично тому,что дал я, срабатывает одинаково. Что значит динозавр косячный? хтмлка не моя,я просто стащил ее с сайта который указал в примере и где именно с этой хтмлкой работало |
у меня работает сейчас скину.
|
повторюсь,что файл не мой, согласен,что боди отсутствует это странно. После добавления оборачивающего дива все заработало это факт, но почему find не может найти #main если тот просто внутри боди? ведь load обрабатывает все правильно? да и эта хтмлка используется на сайте который я приводил в первом посте и там find нормально разбирает содержимое без боди и оборачивающего дива
|
Да вот фиг его знает почеу в body ненаходит. Ежу ясно что должен.
на выходе ты должен получить не dom элемент а некоторое внутреннее представление о нём в jquery. Но об этом элементе, браузер в любом случае нечего незнает. Одним словом jquery судя по всему перемещает только элементы который есть в dom дереве браузера. Возможно в новых версиях Jquery, эту проблему решили. Я просто обошёл её вставляя текст а не Dom элемент. |
с оборачиванием блоком мне не подойдет тк мне нужно будет выбирать все содержимое боди + работать с содержимым хеда. Load не подходит тк он сразу грузит все в блок,а мне нужно в переменную которую я буду чуть изменять... Есть ли способ преобразовать полученный ответом текст в Dom ведь load это как-то делает?
|
понял в чем там фишка,спасибо за помощь,ставлю плюс
|
Часовой пояс GMT +3, время: 09:20. |