2012-12-09 40 views
1

我目前使用$ .get()从另一个文件中获取HTML标记。如何将结果添加到当前DOM的匹配元素的当前jQuery集合中?将HTML字符串转换为jQuery元素集

我以为add()会做的,但事实并非如此。举例来说,这不起作用:

$.get('file.html', function(data) { 
    $('body').add(data) 
}); 

但理想情况下,如果file.html了,说,“”,我希望能够使用#result就像是在当前元素的集合,用$('#result')。html(..)。

我可以做的一件事就是使用$ .load('file.html #result')...但我必须多次这样做,因为我将使用多个元素。然后

我的想法也许是使用

sub$ = jQuery.sub(); 

,并从$不用彷徨添加HTML的返回的字符串给它,但不知道这是否是可能的。

+1

你想'的append()'的数据body元素或更新基于元素响应? – undefined

+0

更新我猜。例如,我得到的一个元素是一个按钮。我想在当前DOM中的某个div内添加该按钮。 – sqram

回答

6

您可以将整个html响应转换为jQuery对象,而无需将其插入到DOM中。这允许您操作或查找特定的元素或值,并对响应的不同部分执行不同的操作。

实施例:

$.get('file.html', function(data) { 
    var $response=$(data); 
    var myButton=$response.find('button'); 

    var someDiv= $response.find('#someDiv').css('color','red') 
    $('#someForm').append(myButton) 

    $('body').append(someDiv) 
}); 

也可以检查对于特定元件的存在,或所述响应中的某些值,并相应地处理响应。

$.get('file.html', function(data) { 
    var $response=$(data); 

    if($response.find('#someDiv').length){ 
     doThis(); 
    }else{ 
     doThat(); 
    } 

}) 
+1

当创建一个jQuery对象作为约定时,有些人使用'$'来知道它是一个jQuery对象而不是一个值,数组或对象字面值 – charlietfl

0

单纯看jQuery文档http://api.jquery.com/html/

你必须使用HTML方式:

$.get('file.html', function(data) { 
    $('body').html(data); 
}); 
+0

这不是我想要的。这将取代身体的全部内容。 – sqram

+0

所以很容易,而不是身体使用另一个选择器,如ID为#someId的div! – SaidbakR