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 に答える