为了账号安全,请及时绑定邮箱和手机立即绑定

关于声明对象为$(this)的问题!

关于声明对象为$(this)的问题!

ken0510 2016-08-12 15:30:16
<!doctype html><html><head>  <meta charset="utf-8">  <title>toggleClass demo</title>  <style>  p {    margin: 4px;    font-size: 16px;    font-weight: bolder;    cursor: pointer;  }  .blue {    color: blue;  }  .highlight {    background: red;  }  </style>  <script src="https://code.jquery.com/jquery-1.10.2.js"></script></head><body> <p>Click to toggle (<span>clicks: 0</span>)</p><p class="blue highlight">highlight (<span>clicks: 0</span>)</p><p>on these (<span>clicks: 0</span>)</p><p>paragraphs (<span>clicks: 0</span>)</p> <script>var count = 0;$( "p" ).each(function() {  var $thisParagraph = $( this );  var count = 0;  $thisParagraph.click(function() {    count++;    $thisParagraph.find( "span" ).text( "clicks: " + count );    $thisParagraph.toggleClass( "highlight", count % 3 === 0 );  });});</script> </body></html>如果把JQ代码换成如下的话 运行效果完全不一样了<script>var count = 0;$( "p" ).each(function() {   var count = 0;  $( "p" ).click(function() {    count++;    $( "p" ).find( "span" ).text( "clicks: " + count );    $( "p" ).toggleClass( "highlight", count % 3 === 0 );  });});</script>特别想知道  类似这种$name=$(this)的情况 不是把name 封装成就近的this的jq对象吗 方便之后引用属性为什么两个代码的运行结果不一样   难道是each的问题  求详细each的用法
查看完整描述

1 回答

?
柠檬酸钠

TA贡献331条经验 获得超534个赞

each是遍历jquery对象的方法,接收一个回调函数作为参数,回调函数可以接收索引(index)和当前便利的元素(el)两个参数,其中el和$(this)等效。而$("p")是选择所有的p元素,$(this)只代表当前的元素,所以肯定不一样

查看完整回答
1 反对 回复 2016-08-12
  • 1 回答
  • 0 关注
  • 1232 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信