使用$ .get导入文件部分

时间:2012-01-26 16:58:17

标签: jquery variables load find

我想导入html文件的内容并用内容填充文本框(输入类型:“text”value =“”)。

到目前为止,我已经:

$("a.clickable").click(function(event){
  $.get('site.html', function(data){
    $("input#textbox").val(data);
  });
});

这很好用,但我只想导入div id(或class)指定的文件的一部分,类似于使用.load时会发生的情况,如下所示:

$('#textbox').load('site.html #someid')

或(如果可能的话):

 $.load('site.html #someid', function(data){...

我想我不能使用.load将导入的文本存储为变量,因此这是不可能的(对!!!)。我想也许通过使用.find('#someid')我可以从html文件中获取所需的部分。这有一个类似的主题:

JQuery .load() into variable or hidden element

...但是没有什么我似乎无法让它发挥作用!

2 个答案:

答案 0 :(得分:1)

$.get('/your_url/', function(reply_string){
  // turn reply string into a jQuery object so you can look up elements and evaluate
  var retrieved_value = $(reply_string).find('#your_element').val()
  $('#textbox').val(retrieved_value)
})

不是很优雅,但应该有用......

答案 1 :(得分:0)

我发现尝试在通过$(layout).find("#fragment-id")检索的HTML上使用$.get()只会给我一个空对象。相反,当@Matte评论另一个答案时,我将原始HTML添加到我用jQuery创建的div。然后我可以使用find(),获取我想要的片段,并将其存储在变量中。我能够将变量附加到目标,或稍后使用。

var $template;
$.get("layout.html", function( layout ) {
  $template = $("<div></div>").html( layout ).find("#fragment-id");

  $target.append( $template );
}

上面的代码将完整的片段作为jQuery对象返回,这符合我的目的。如果您只想要片段中的纯内部html,则需要使用.find("#fragment-id").html()