【问题标题】:Chrome console handling jQuery $(this) bug?Chrome 控制台处理 jQuery $(this) 错误?
【发布时间】:2011-06-08 23:27:38
【问题描述】:

有点奇怪。

<table>
    <tr>
        <td>feng</td>
    </tr>
</table>

jQuery 代码:

$('table tr').click(function(e){
   console.log($(this)==null); //returns False
});

Chrome 控制台输出False,这是预期的。 但是,当我在函数中切换断点并触发事件时,我发现如果我在 Chrome 控制台中键入$(this),它会返回null

【问题讨论】:

  • 你在哪里触发断点?
  • console.log($(this)==null); 行中

标签: javascript jquery google-chrome console this


【解决方案1】:

this“变量”并不是真正的变量。我不认为 Chrome 为 this 建立了一个值来匹配当前执行上下文中的值;坦率地说,这很难做到。

如果您希望能够调试这样的函数,只需确保将 this 值放入常规的旧局部变量中:

   var saveThis = this;

那么,$(saveThis) 应该适合你。

【讨论】:

  • 我输入:this 控制台返回:​...​​
  • 抱歉,不小心输入了 Enter。
  • 我在控制台中输入:_this_。控制台返回:_​...​​_。所以这原来是一个定义的变量。当我按照您的建议进行操作时,var saveThis = this,控制台返回未定义。我很困惑,这就是实际发生的事情
  • 好吧,我承认我不是 Chrome 控制台专家,但听起来您希望控制台的执行环境与当前执行/调试的代码匹配。这可能根本不是真的。
【解决方案2】:

当我打算将“this”传递给另一个函数时,我通常觉得保存它很方便。

var $this = $(this);

【讨论】:

  • 我通常使用$self 来避免混淆。该变量可能在 this 不再指代同一事物的上下文中可用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-14
  • 1970-01-01
  • 2012-05-25
  • 1970-01-01
  • 1970-01-01
  • 2018-01-29
  • 2022-06-14
相关资源
最近更新 更多