1

完了したときにどのようshwOpts.show("fast");に行動させることができremoveHighlight()ますか?

匿名関数を引数として他の関数に入れると、コールバックとして機能すると思いました。これはうまくいきませんでした。

removeHighlight : function(f) {
        // remove previous highlight.
        var highlight = $('#openid_highlight');
        if (highlight) {
            highlight.replaceWith($('#openid_highlight a')[0]);
        }
    },


 moreOptsLink = $("#more-options-link").click(function () {
              moreOptsLink.detach();
              openid.removeHighlight(function(){$("#show-more-options").show("fast");});
              //shwOpts.show("fast");
              openid.setPref("showMoreOpenIdOptions", !0)
            });
4

3 に答える 3

6

コールバック関数を実行していません

removeHighlight : function(f) {
    // remove previous highlight.
    var highlight = $('#openid_highlight');
    if (highlight) {
        highlight.replaceWith($('#openid_highlight a')[0]);
    }

    if (typeof(f) === "function") {
        f();
    }
},
于 2012-08-07T20:17:09.520 に答える
1

次のように、removeHighlight関数でコールバックを呼び出す必要があります。

removeHighlight : function(f) {
    // remove previous highlight.
    var highlight = $('#openid_highlight');
    if (highlight) {
        highlight.replaceWith($('#openid_highlight a')[0]);
        if( typeof f === 'function' ) {
            f();
        }
    }
},


moreOptsLink = $("#more-options-link").click(function () {
     moreOptsLink.detach();
     openid.removeHighlight(function(){
         $("#show-more-options").show("fast");
     });
     openid.setPref("showMoreOpenIdOptions", true);
});

typeof controlを使用すると、関数をパラメーターとして関数に渡さなくてもエラーが発生しません。

于 2012-08-07T20:18:44.817 に答える
0
removeHighlight : function(f) {
        // remove previous highlight.
        var highlight = $('#openid_highlight');
        if (highlight) {
            highlight.replaceWith($('#openid_highlight a')[0]);
        }
   //you need to call f
       f()

    },
于 2012-08-07T20:17:11.250 に答える