2013-07-01 5 views
1

У меня есть html-страница, содержащая форму с id "frmCmt", я хочу просто показать эту форму в другом документе, используя jQuery .filter(), но теперь работаю и показываю полную страницу ,jQuery .filter() dont work

мой код JQuery:

function showCommentForm(postID){ 
$.ajax({ 
type: "GET", 
cache: true, 
url: "http://mysite.com/post/comment/"+postID, 
success:(function(msg){ 
$("#commentContainer"+postID).html(msg).filter("#frmCmt") ; 
return false; 
})}); 

пожалуйста, помогите.

+0

Моя проблема все еще не решена, я жду ваших решений. Я получаю эту ошибку при использовании одного из кодов ниже! Uncaught Ошибка: Ошибка синтаксиса непризнанное выражение: ... jquery.min.js: 4 – reza

ответ

1

Ваш текущий код не будет работать по трем причинам:

  1. Вы инъекционные все в msg в свой элемент в HTML; .filter только пробегает после Это произошло, поэтому он не может работать.
  2. .filter фильтрует элементы из согласованного набора объекта jQuery, но tou не использует результат .filter, чтобы сделать что-либо, чтобы он снова не работал.
  3. Соответствующий набор в этом случае не содержит никакого элемента #frmCmt, поэтому .filter будет оценивать «пустой» экземпляр jQuery; даже если бы это было каким-то образом использовано, результаты не были бы тем, что вы ожидали.

Изменить код

var html = $(msg).find("#frmCmt").html(); 
$("#commentContainer"+postID).html(html); 

Этот код создает объект JQuery из содержимого msg и нулей в на требуемом элементе с .find, прежде чем вставить его в DOM.

+0

я получаю эту ошибку: Uncaught Ошибка: Ошибка синтаксиса непризнанного выражение: ... jquery.min.js: 4 – reza

+0

@ IRONMAN: Это совсем не полезно, и совершенно неясно (но очень тревожно), почему вы будете оценивать HTML как JS-код. Вам нужно выполнить некоторую отладку - какой код вызывает ошибку? Каков вклад в этот код? – Jon

0

Вам может понадобиться использовать find() вместо .filter() здесь, фильтр будет работать только в случае, если данный элемент является элемент верхнего уровня в msg

Один способ исправить это может быть

$(msg).find('#frmCmt').appendTo($("#commentContainer"+postID).empty()) 

Или вы можете использовать функцию .load()

$("#commentContainer"+postID).load("http://mysite.com/post/comment/"+postID + ' #frmCmt') 
+0

Эй, Арун, вы только что отредактировали мой ответ, похоже, по ошибке :) – Cherniv

+0

@Черновский извините, да, это была ошибка –

+0

Это из-за порядка "перетасовки" – Cherniv