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 控件,当您不将函数作为参数传递给函数时,不会出现任何错误。

于 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 回答