te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - Jquery $(this) not working inside function - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Jquery $(this) not working inside function - Stack Overflow

programmeradmin4浏览0评论

I am trying to use waypoints.js to have elements fadein when scrolling to hit the elements.

I have

$(document).ready(function(){

$('.card').waypoint(function(down) {
    console.log('hit element');
    $(this).addClass('card-fadeIn');
}, { offset: '100%' });

});

What this does is adds the class 'card-fadeIn' which is opacity 1 and an ease in animation.

When I change it to

$('.card').addClass('card-fadeIn');

It works fine, but adds opacity 1 to every card class and ruins the fadein effect. I was trying to use $(this) instead but it wont fadein, nor will it give an error in the console. Any ideas why?

I am trying to use waypoints.js to have elements fadein when scrolling to hit the elements.

I have

$(document).ready(function(){

$('.card').waypoint(function(down) {
    console.log('hit element');
    $(this).addClass('card-fadeIn');
}, { offset: '100%' });

});

What this does is adds the class 'card-fadeIn' which is opacity 1 and an ease in animation.

When I change it to

$('.card').addClass('card-fadeIn');

It works fine, but adds opacity 1 to every card class and ruins the fadein effect. I was trying to use $(this) instead but it wont fadein, nor will it give an error in the console. Any ideas why?

Share Improve this question asked Aug 12, 2015 at 14:35 ServerSideSkittlesServerSideSkittles 2,97312 gold badges39 silver badges62 bronze badges 5
  • Can you log what this is inside that function? – Jack Guy Commented Aug 12, 2015 at 14:37
  • this could be very different to what you think it is. – Johan Commented Aug 12, 2015 at 14:37
  • this is probably not the jQuery object scope anymore. Save this in some variable before. – Lars Graubner Commented Aug 12, 2015 at 14:38
  • I think, because in this case this is the waypoint. Console log this to inspect what is that. Try to pass the element to that function. – vaso123 Commented Aug 12, 2015 at 14:40
  • Yep console log gives me element and a few other options – ServerSideSkittles Commented Aug 12, 2015 at 14:47
Add a ment  | 

2 Answers 2

Reset to default 11

You have to use

$(this.element)

in a Waypoint handler. So,

$(this.element).addClass('card-fadeIn');

should do what you want.

$(this) works inside jQuery callbacks because jQuery is designed for things to work that way. There's nothing magic about it, however, so if this doesn't refer to a DOM element, you'll get a jQuery object that won't do anything (and which won't report any errors, because, again, that's just how jQuery works). The Waypoint library binds this to its own context object, and that exposes a reference to the DOM element involved in the callback as the "element" property.

Have you tried this.element?

$(document).ready(function(){

$('.card').waypoint(function(down) {
    console.log('hit element');
    $(this.element).addClass('card-fadeIn');
}, { offset: '100%' });

});
发布评论

评论列表(0)

  1. 暂无评论