2

クリックイベントのある超シンプルなIDタグがあります。特定のシナリオでクリックを無効にするためにJQueryunbindを使用しましたが、以下のコードで再度バインドしようとすると、クリックイベントが発生しません。

disableButton()
{
    $('#id1').unbind('click');
}
        .......
enableButton()
{
    $('#id1').bind('click');
}

クリックハンドラは次のようになります。

$("#id1").click(function () {
    //apply some complex front end business rules
}

誰かが私が正しい/間違っていることを手伝ってくれませんか?

クリックを有効または無効にしたいだけですが、これを実現する簡単な方法はありますか?

アップデート:

私が理解していることから、bindとonの両方には、実行されるコールバック関数が必要です。クリックイベントを実行したくないので、これは私の場合の問題になりますが、クリックイベントを有効にして、クリックが発生する準備をします。

コールバック関数を渡さなくても、クリックイベントを無効または有効にすることはできませんか?

4

3 に答える 3

3

最初に関数を宣言します。

function clickFunction(){
//your code here, to be execute on click
}  

必要に応じて、クリックイベントにクリック関数をバインドします

$('#id1' ).on("click", clickFunction())

後で off でバインドを解除します。

$('#id1' ).off("click", clickFunction())

もう一度バインドしたい場合: $('#id1' ).on("click", clickFunction())

于 2012-06-16T12:55:52.560 に答える
0

on("click") のバインドを解除する必要があるという同様の問題に遭遇しました。それを停止させる唯一の方法は、定義したカウンターのスイッチを利用することです。たぶん、このアプローチは役に立つかもしれません。

$(".images").on("click", function () {
    console.log(this.id);

    switch (cntr) {
       case 0:
           something();
           break;
       case 1:
           something();
           break;
       default:
           return;
    }
});
于 2017-02-11T02:52:56.723 に答える
0

与えられた解決策は私の問題を解決しました。これも試してみてください。

$(function() {
    bindratings();
});

function bindratings() {
    var selector = $(".class_name");
    selector.bind("click", function() {
        selector.unbind("click");

        // write your code here

        setTimeout('bindratings();', 100);
    });
}
于 2019-08-20T04:39:42.390 に答える