【问题标题】:Retrieve specific element from external document using AJAX and jQuery .get()使用 AJAX 和 jQuery .get() 从外部文档中检索特定元素
【发布时间】:2014-11-17 23:14:00
【问题描述】:

使用 ajax 和 jQuery,当用户切换开关时,我尝试从外部文档中的特定元素加载内容。目标内容由切换开关元素的name 指定。

所以我从 HTML 开始...

<input id="toggle1" name="externalContent1" class="toggle" type="checkbox">
<input id="toggle2" name="externalContent2" class="toggle" type="checkbox">
<input id="toggle3" name="externalContent3" class="toggle" type="checkbox">

我第一次尝试使用'.load()'...

$('.toggle').click(function () {

  var section = '#' + $(this).attr('name');

  if ($(this).is(':checked')) {
    $('#target').load("content.htm " + section);
  }

  else {
    $(section).remove();
  }
});

这可行,但它替换了#target 元素的内容。我需要追加而不是替换。

然后我尝试了其他 SO questions 使用 .get() 的一些建议

if ($(this).is(':checked')) {
  var content;
  $.get('content.htm ' + section, function(data) {
    content = data;
    $('#target').append(content);
  });
}

但是这些使用.get().post().ajax() 的解决方案(至少以我尝试过的方式),不允许我在content.htm 中指定一个元素,它只会拉整个文件。

有没有办法使用.get() 从外部文档中检索特定元素?

正如我一直在考虑的那样,我想我也可以在检索到的页面中搜索section,然后只附加它。我找到了this suggestion,并尝试了它,但我也没有运气:

if ($(this).is(':checked')) {
  $.ajax({
    url: 'content.htm',
    type: 'GET',
    success: function(res) {
      $(res.responseText).find(section).each(function(){
        $('#target').append($(this).html());
      });
    }
  });
}

【问题讨论】:

    标签: javascript jquery ajax


    【解决方案1】:

    稍加修改,您就可以使用.load() 解决方案。首先加载到单独的元素中,然后追加。

    if ($(this).is(':checked')) {
        $('<div id="tempForLoad">').load("content.htm " + section, function(){
            $('#target').append($('#tempForLoad').html());
            $('#tempForLoad').remove();
        });
     }
    

    【讨论】:

    • 谢谢,这行得通。我想一个'hacky'解决方案将不得不做。你在($('#tempForLoad').remove(); 行中缺少) 说到那行,为什么它被额外的括号括起来?在将您的建议标记为答案之前,我将再等一天看看是否有人有任何其他建议。
    • 左括号是错字,已修复。等待当然没问题。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 2022-10-12
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    相关资源
    最近更新 更多