1

我只是不明白。

function init() {

    $(document).on('click', '#listFilter .option:not(".darr"), #listSort .option:not(".darr")', function() {
        var selected = $(this).data('ajax-link'),
            dropDown = $(this).parent().parent(),
            filter = '',
            sort = '';

        if ( dropDown.attr('id') == "weaveListFilter" ) {
            filter = selected;
            sort = $('#listSort .darr').data('ajax-link');
        } else if ( dropDown.attr('id') == "weaveListSort" ) {
            filter = $('#listFilter .darr').data('ajax-link');
            sort = selected;
        }

        if ( selected != dropDown.find('.darr').data('ajax-link') )
            console.log('why?')
            sortList(filter, sort, dropDown.parent());
            //console.log('wtf!')
    });

}

没有这个console.log('why?')函数sortList()是不会被调用的!!!为什么没有这条线就不会被调用?

最奇怪的是,这个“为什么?” 甚至没有登录我的控制台。但是没有它, sortList() 函数就不会执行。“wtf!” 在函数调用将被记录后,但我还是没有得到它。

想法?我是笨还是笨?

4

2 回答 2

4

因为你if失败了。{ }主体周围没有大括号if,因此只有第一个语句被认为是if. 通过添加console.log,您将sortList不再是if.

首先,在你的周围加上大括号if

if ( selected != dropDown.find('.darr').data('ajax-link') ) {
    sortList(filter, sort, dropDown.parent());
}

然后去找出你的if条款失败的原因。

于 2012-07-19T17:07:19.037 回答
3

{ }在此之后您忘记了该块if

if ( selected != dropDown.find('.darr').data('ajax-link') )

这种情况显然是错误的,所以会发生什么:

  • console.log()不执行
  • sortList()不附加到if,所以它总是运行。

如果您注释掉console.log(),则两个语句都不会运行,因为

  • console.log()被评论
  • sortList()处于虚假状态
于 2012-07-19T17:09:20.187 回答