0

click() に複雑な問題があります。function 1 、 function 2 、 method 1 、 method 2 という名前の 4 つのボタンがあります。

<button id="function1"> Function 1</button>
<button id="function2">Function 2</button>
<button id="method1">Method 1</button>
<button id="method2">Method 2</button>

関数 1 がクリックされ、メソッド 1 がクリックされると、このようなアクションをトリガーする必要があります

 $("#function1").click(function(){
 $('#method1').click(function(){
 $('#section1').html('<img src="http://us.123rf.com/400wm/400/400/myvector/myvector1201/myvector120102079/12127940-  vector-illustration-of-single-isolated-airport-icon.jpg"/>');
  });
});

このように、関数 1 メソッド 1、関数 1 メソッド 2、関数 2 メソッド 1、関数 2 メソッド 2 の 4 つの異なる組み合わせがあります。

問題は、関数 1 を任意の方法で選択したときに問題なく動作することです。関数 1 を選択した後に関数 2 を選択すると、両方の値が変更されます。

以前の click() をクリアしたいのですが、変更は選択した組み合わせに対してのみ発生する必要があります。

BINを追加しました

前もって感謝します

4

3 に答える 3

4

unbindイベント ハンドラを削除するを探しています。Bin を更新しました。

于 2012-12-14T06:10:44.897 に答える
0

シーケンシャルクリックのバインディングをいじるのは良い考えではないと思います。クリックシーケンスを含むいくつかの変数を作成し、シーケンスが興味のあるものと一致するかどうかを確認します。これはほんの一例です:

var prevClick = '';
var currClick='';

function doClick() {
    var name = $(this).attr("id");
    prevClick = currClick;
    currClick = name;
    checkSequence();
}

function checkSequence() {
    // Check the sequence.
    if ((prevClick == 'function1') && (currClick == 'method1'))
    {
      $('#section1').html('<img src="http://us.123rf.com/400wm/400/400/myvector/myvector1201/myvector120102079/12127940-  vector-illustration-of-single-isolated-airport-icon.jpg"/>');
    }
}

$(function(){
   // Assume that you only this four buttons.
   // Otherwise put more specific jQuery selector like adding a class.
   $("button").click(doClick);
});
于 2012-12-14T06:22:50.810 に答える
0

$.click は、イベント ハンドラーを追加するために使用されます。「function1」/「function2」ボタンをクリックすると、「method1」に 1 つのイベント ハンドラーが追加されます。たとえば、ユーザーが「function1」を 2 回、「function2」を 3 回クリックするとします。'method1' には、'function1' 用に 2 つ、'function2' 用に 3 つ、合計 5 つのイベント ハンドラーがあります。これは良い設計ではありません。

あなたの目的のために。ここに解決策があります:

var funType = 0;
$("#function1").click(function(){
   funType = 1;
});
$("#function2").click(function(){
   funType = 2;
});

$('#method1').click(function(){
   if(funType  == 1){
      //function1 is clicked
   }
   else if(funType  == 2){
      //function2 is clicked
   }
});

$('#method2').click(function(){
   if(funType  == 1){
      //function1 is clicked
       }
   else if(funType  == 2){
      //function2 is clicked
   }
 });
于 2012-12-14T06:23:50.527 に答える