在我的网站中,网址如下:www.example.com/question/#comment23
我想滚动到这个,我使用这段代码:
if (window.location.hash) {
var elem = $(window.location.hash);
var elemId = $(elem).attr('id')
var top = $('#' + elemId).offset().top - 60;
var moreCmntElm = $('#' + elemId).closest('.comment-wrp').siblings('.create-comment-wrp').children('.moreCommnets');
$('html, body').animate({
scrollTop: top
}, 1600, 'easeInOutQuart')
if (moreCmntElm.css('display') == "none") {
moreCmntElmFunc(moreCmntElm.children('button')[0])
}
}
但是它可能隐藏了注释display:none
(当问题有很多注释时就像stackoverflow一样),在这种情况下我想要触发show more comment button
事件。
此功能显示其他评论:
function moreCmntElmFunc($this) {
$this.closest('.other-user-comments-wrp').children().show('blind', 'fast');
$this.css('display', 'none');
$this.parent().css('display', 'none');
}
但代码正常工作,并显示其他注释。
我的问题是我得到一个错误,否则其他JS操作不起作用。
$this.closest(...).children is not a function
答案 0 :(得分:1)
由于children()
是一个jQuery函数而moreCmntElm.children('button')[0]
返回底层DOM元素,因此它们无法执行jQuery函数。因此,您收到错误
使用.eq()
moreCmntElmFunc(moreCmntElm.children('button').eq(0)); //.first() can also be used
而不是
moreCmntElmFunc(moreCmntElm.children('button')[0]);