从$ .get()中将DOM内容作为jQuery对象拉出

时间:2013-07-10 10:49:31

标签: javascript jquery html

作为jQuery插件的一部分,使用$.get()来拉取奇怪的对象格式,这意味着在任何后期函数挂钩中都无法进行DOM遍历:

$.get($href)
.done(function(){
  $linkClicked.addClass('active')
})
.fail(function(){
  $.get(settings.errorUrl, function(){
    $('.main-navigation .active').removeClass('active')
  })

})
.always(function(data){

  // The below line does not work correctly
  $(settings.target).hide().html( $(data).children(settings.target).html() ).fadeIn('fast')

})

如果有人伸出援助之手,那就太好了。非常感谢。

3 个答案:

答案 0 :(得分:2)

我想你可以这样做:

$.get('ajax/test.html', function(data) {
 var container = $('<div />').html(data);
 var contentYouNeed =  container.find('#ajaxID').html();
});

正如您在文件here上看到的那样( http://api.jquery.com/jQuery.get/),返回的data依据 jQuery.get()是PlainObject或String。

  

数据
   输入: PlainObject String
  使用请求发送到服务器的普通对象或字符串。

要从此对象检索内容,请将此数据放在<div>这样的对象中。

 var container = $('<div />').html(data);

您可以使用find()获取内容。

var contentYouNeed =  container.find('#ajaxID').html();

答案 1 :(得分:1)

不不不不。您不要使用regex来解析HTML read this

另外,要解决您的问题,请使用jQuery selectors$("#yourID").html()

答案 2 :(得分:0)

所以响应总是一个 div元素?在这种情况下,它只是抓住它的内容。无论ID和属性是什么。

$.get('ajax/call.php', function(data) {
    var contents = $(data).html();
});