当前位置: 首页 > 面试题库 >

$(this)在函数中不起作用

姬泰
2023-03-14
问题内容

以下代码从文件加载html内容我使用了该线程

<script>
$.fn.loadWithoutCache = function (){
 $.ajax({
     url: arguments[0],
     cache: false,
     dataType: "html",
    success: function(data) {
        $(this).html(data);        // This is not working
      //$('#result').html(data);   //THIS WORKS!!!
        alert(data);           // This alerts the contents of page.html
    }
 });
}


$('#result').loadWithoutCache('page.html');

</script>

请让我知道问题是什么?我希望这是愚蠢的:)

编辑:正确的代码

<script>
$(document).ready(function() {

$.fn.loadWithoutCache = function (){
 var $el = $(this);
 $.ajax({
     url: arguments[0],
     cache: false,
     dataType: "html",
     context: this,
     success: function(data) {
     $el.html(data);
    }
 });
}

$('#result').loadWithoutCache('page.html');

});
</scipt>

谢谢乔恩和大家!


问题答案:

callback(success)函数在响应到达时运行,并且不在loadWithoutCache方法范围内运行,因为该函数已经结束。

您可以contextajax调用中使用属性来设置回调函数的上下文:

$.fn.loadWithoutCache = function (){
  $.ajax({
    url: arguments[0],
    cache: false,
    dataType: "html",
    context: this,
    success: function(data) {
      $(this).html(data);
    }
  });
}


 类似资料:
  • 问题内容: 我使用React和jQuery。这是我的代码的一部分。 在安装组件之前,我执行ajax请求以了解用户是否已登录。 当响应返回状态码200 时,应该设置状态。我使用的是错误的吗? 编辑01 当我在回调中。 在下面。 解决方案 我上面的代码是反模式。 请遵循答案我建议的一种方法。另外,React文档已经为我的案例提供了非常有用的解决方案:通过AJAX加载初始数据 同样,setState是异

  • 问题内容: 在我的Web应用程序中使用codeigniter。我正在尝试使用base_url()函数,但显示为空结果。我也通过自动加载文件使用了自动加载帮助器,但是它似乎也不起作用。我也定义了基本常数,但是都没有用。 问题答案: 为了使用,您必须首先加载URL Helper。可以在第67行(或第67行附近)完成此操作: 或者,手动: 加载后,请切记不要隐式打印或回显任何内容,而是返回要打印的值:

  • 问题内容: 以下是我的JavaScript(mootools)代码: 在除IE之外的所有浏览器中,这都可以正常工作。但是在IE中,这会导致错误。我有IE8,因此在使用其JavaScript调试器时,我发现该对象没有导致错误的方法,因此正在提交表单。在Firefox(我使用Firebug发现)的情况下支持该方法。 有帮助吗? 问题答案: 在IE中,您可以使用 达到相同的结果。 为了不出错,您可以测试

  • 问题内容: 有两个函数hello1()和hello2()。 在中,延迟3秒后打印“ hello1”。 但是在中,它会立即打印“ hello2”。 我认为是因为它必须在setTimeout中使用函数名称。 如果我想在延迟3秒后执行带有参数的函数怎么办? 因为我想将参数传递给函数,所以我不能只在setTimeout中使用函数名,例如 问题答案: 当对函数使用括号时,将立即执行。 要将函数与参数一起使用

  • 问题内容: 嗨,我尝试在POST请求中尝试PHPPost请求,认为这可能对我有用,下面给出了我的代码 形成index.php文件,而index2.php是同一目录中的另一个文件,当我打开页面时,我的error.log文件中出现以下错误 我想要做的是我有一个发送发帖请求的预订表格,然后我想处理发帖值并再次将发帖请求发送到贝宝 问题答案: 您需要为php安装CURL支持。 在Ubuntu中,您可以通过

  • 问题内容: Oracle-函数不起作用 所以我不知道我在做什么错。我已经花了几个小时了,非常感谢您的帮助。 因此,基本上我有2个表,一个表被称为主列表,它是一个学生列表,另一个表被调用,它基本上具有该学生所注册课程的列表。 因此,我编写了一个函数,用于将登录学生的用户名(在本例中为)与学生列表进行比较,并确保登录用户是学生。然后,它将与表进行比较,以查找用户注册的任何程序。因此,从本质上讲,当我(