【问题标题】:DOM manipulation does not workDOM 操作不起作用
【发布时间】:2012-04-01 22:56:59
【问题描述】:

是的,我知道,这个标题并没有真正的帮助,但这正是问题所在。出于某种原因(我不知道),我无法在 AJAX-Request 的 beforeSend 函数中操作我的 HTML。

这是 HTML:

<div class="right">
    <span id="observer-eye" original-title="Observe this Summoner" data-id="2">
        <img alt="" src="/lolreports/img/icons/observer_eye.png">
    </span>
</div>

这是 AJAX 请求:

$.ajax({
    type: 'post',
    dataType: 'json',
    url: webroot + 'summoners/observe',
    data: 'data[Summoner][id]=' + id,
    beforeSend: function(XMLHttpRequest) {
        $(this).parent().empty();
    },
    success: function(data) {
        if(data.status == 'success') {
            $(this).find('img').attr("src", webroot + 'img/icons/observed_eye.png"');
        }
    }
});

我的目标是将一个 ajax-loader.gif 放在我想用 $(this).find('img').attr("src", webroot + 'img/icons/ajax 做的 -Tag -loader.gif"'); - 什么也没发生。我测试了很多方法来操纵图像或跨度,但什么也没发生。我想知道 beforeSend 是否会被执行,我用 alert()。它有效。但没有 DOM 操作。

我不知道在哪里搜索,希望你能帮助我。

【问题讨论】:

  • $(this) 在您的 beforeSend 处理程序中指的不是您的想法。用console.log(this);检查它
  • 是什么触发了这个 AJAX 调用?你能放吗?

标签: jquery


【解决方案1】:

不要使用$(this),因为它没有正确引用您想要的元素。当然有很多方法可以做到这一点,试试这个

$("#observer-eye").find('img').attr("src", webroot + 'img/icons/observed_eye.png"');

对于之前发送,不要使用$(this),而是这样做

$('the-intended-selector').parent.empty()

【讨论】:

  • 我应该通过 myslef 找到这个 :P 但是谢谢,这就是解决方案!
猜你喜欢
  • 2017-01-23
  • 1970-01-01
  • 2018-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-31
  • 1970-01-01
相关资源
最近更新 更多