页面加载时,JQuery触发单击事件

时间:2015-07-23 09:09:19

标签: javascript jquery

在我的网站中,网址如下: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

1 个答案:

答案 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]);