jQuery上的$(this)关键字

时间:2015-01-22 17:50:02

标签: jquery

尝试了解关键字的工作原理。例如,在这段代码上,这个是指“按钮”吧? (或点击按钮的动作)。 谢谢

 $(document).ready(function(){
  $("button").on("click", function(){
    var discount = $(this).closest(".tour").data("discount");
    var message = $("<span>Call 1-555-jquery-air for a $discount discount.</span>");
    $(this).closest(".tour").append(message);
    $(this).remove();
  });
});

HTML here:

<div id="tours">
  <h1>Guided Tours</h1>
  <ul>
    <li class="usa tour" data-discount="299">
      <h2>New York, New York</h2>
      <span class="details">$1,899 for 7 nights</span>
      <button class="book">Book Now</button>
    </li>
    <li class="europe tour" data-discount="176">
      <h2>Paris, France</h2>
      <span class="details">$2,299 for 7 nights</span>
      <button class="book">Book Now</button>
    </li>
    <li class="asia tour" data-discount="349">
      <h2>Tokyo, Japan</h2>
      <span class="details">$3,799 for 7 nights</span>
      <button class="book">Book Now</button>
    </li>
  </ul>
</div>

3 个答案:

答案 0 :(得分:3)

在该代码中,this是对所单击元素的引用(实际的DOM button元素)。 $(this)是一个函数调用,将this传递给$()并返回一个jQuery对象。该jQuery对象是DOM元素的包装器。

因此代码使用相同的参数重复调用$()。在这种情况下,它并不是特别有害,但是如果你处于紧张的环境或其他事情中,你想要将其称为一次并保留对结果的引用。< / p>

答案 1 :(得分:1)

在JavaScript中,与大多数面向对象的编程语言一样,this是一个特殊的关键字,在方法中用于引用调用方法的对象。 this的值是使用一系列简单步骤确定的:

  • 如果使用Function.call()Function.apply()调用该函数,则this将设置为传递给.call() / .apply()的第一个参数。如果传递给.call() / .apply()的第一个参数是nullundefinedthis将引用全局对象(window Web浏览器中的对象)。
  • 如果正在调用的函数是使用Function.bind()创建的,this将是在创建函数时传递给.bind()的第一个参数。
  • 如果函数作为对象的方法被调用,this将引用该对象。
  • 否则,该函数将作为未附加到任何对象的独立函数调用,this将引用全局对象。

参考this URL

答案 2 :(得分:0)

通常,this关键字类似地用于引用函数(使用它的地方)绑定的对象。 this关键字不仅引用了对象,还包含了对象的值。