1

クリック時に子関数から親関数を返すにはどうすればよいですか?コード例は次のとおりです。

function returnFunction() {

    var output = false;

    $('a').click(function() {

       output = true;

    });

    return output;    

}

var result = returnFunction();

コードの実行時にクリックが発生していないため、結果は常にfalseになります。どうすればこれを機能させることができますか?

私の意図はポップアップダイアログを呼び出すことであり、[確認]ダイアログボックスのクリックイベントを含め、すべてのロジックを1つの関数内に簡単にロードできるようにしたいと考えています。

スクリプトの他の場所では、たとえば次のように呼んでいます。

// Menu click triggers the dialog
$('a').click(function(e) {
    // The function displays the dialog and returns the click events of the dialog
    var result = returnFunction();
    // If result was false, we'll prevent the menu access, for example
    if (!result) {
        e.preventDefault();
    }
});

jQueryUIダイアログプラグインを知っています。しかし、私は今のところそれなしでこれを達成したいと思います。

ありがとう。

4

2 に答える 2

2

それを過度に単純化すると、次のようになります。

javascriptの実行中は、すべてが停止します(スクロールやハイパーリンクのクリックを含む)。これは、誰かがリンクをクリックするまでスクリプトを「一時停止」できないことを意味します。

これを解決する一般的な方法は、コールバック関数です。

function my_callback(some, arguments) {
    // you can do whatever in here: an ajax load, set a global variable, change some of the page, ...
    console.log(some, arguments);
    alert(some + " " + arguments);
}

function returnFunction(callback, param) {
    var output = false;
    $('a').click(function() {
       callback(param, "world");
    });
}

returnFunction(my_callback, "hello");

http://jsfiddle.net/UnBj5/のデモ

編集:

グローバル変数はオプションであるため言及しましたが、通常は悪いスタイルです。可能であれば、他の手段を使用してみてください。

さらにサポートが必要な場合は、実行しようとしていることの詳細を提供してください。

于 2012-08-24T14:33:22.967 に答える
0

代わりにパラメータを使用してみてください。アラートボックスを表示する関数にパラメータを送信し、パラメータに応じて異なるポップアップアラートを表示します。基本的に鶏が先か卵が先かという問題があるため、実行しようとしていることは機能しません。

于 2012-08-24T14:29:14.483 に答える