2016-09-27 7 views
1

表の各行にチェック・ボックスがあります。行内のチェック・ボックス・チェック・イベントが発生すると、イベントをクリックします。

行のクリックの他の場所で発生するイベントが発生することがあります。しかし、チェックボックスをチェックすると、私はイベントを発生させたくありません。

これは私のマークアップです。

 <tbody data-bind="foreach:CustomerList"> 
      <tr onclick="removepage();" onmouseover="changeRowColor(this)" onmouseout="restoreRowColor(this)"> 

       <td> 
        <input class="checkbox" data-bind="attr: { Id: 'checkbox' + $data.Id },click:$parent.customerClick" type="checkbox"> 

       </td> 
       <td class="col-md-4"> 
        <span class="name" data-bind="text:customerName" /> 

       </td> 
       <td> 
        <span data-bind="text:siteName" /> 
       </td> 

      </tr> 
     </tbody> 

とき

customerClick()が起こるremovepage()は、すべてのためにトリガーされますのであれば、私はクビにするremovepage()を望んでいません。

私は

customerClick: function() { 
     debugger; 
     e.stopPropagation(); 
    }, 

を試してみましたが、それはうまくいきませんでした。

どうしたのですか?

+4

あなたのコードでは、 'e'は未定義ですか? –

+0

customerClick関数にパラメータとして引用符を付けずに "e"を渡し、再度チェックします。 –

答えて

1

あなたcustomerClick機能は次のようになります。

customerClick: function (event) { 
     event.stopPropagation(); 
    } 

0
あなたはとてもちょうどあなたの関数()内の電子を追加する機能 のためのパラメータとして、それを追加することなく、電子を使用している

customerClick: function(e) { 
    e.stopPropagation(); 
}, 
0

Javaスクリプトでは、イベントリスナーをいくつか持っているので、イベントリスナーのバブリングを止めることができます。イベントにリスナーを付けると、他のイベントにバブリングを止めることができます。

するevent.stopPropagation()

はあなたがこのようなあなたのイベントをバインドする必要があり

0

を探している方法である:私はこれが役に立てば幸い

$("#test > tbody > tr") 
 
    .on("click", "td:not(.notfiring)", function(){ 
 
    alert("click tr"); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table id="test"> 
 
<tbody> 
 
    <tr> 
 
    <td class="notfiring"> 
 
     <input class="checkbox" type="checkbox"> 
 
    </td> 
 
    <td> 
 
     Col 1 
 
    </td> 
 
    <td> 
 
     Col 2 
 
    </td> 
 
    </tr> 
 
    </tbody> 
 
</table>

あなた

関連する問題