9
<tr class="DesignedTableTR" onclick="OpenAdPreview()">
    <td></td>
    <td></td>
    <td></td>
    <td></td>
</tr>

onclick2 番目の td を除くすべての td-s で が設定されるようにします。

私は次のようにできることを知っています:

<tr class="DesignedTableTR">
    <td onclick="OpenAdPreview()"></td>
    <td></td>
    <td onclick="OpenAdPreview()"></td>
    <td onclick="OpenAdPreview()"></td>
</tr>

しかし、おそらく別の効率的な方法があります..

4

7 に答える 7

6

:not()および:nth-child()セレクターを使用します。

$("tr.DesignedTableTR > td:not(:nth-child(2))").on("click", OpenAdPreview);
于 2013-09-08T11:40:22.697 に答える
2

jQuery を使用する場合、最初はより軽量なイベント デリゲーションを使用することをお勧めします。次に、HTML を JavaScript コードから分離する必要が<td>あります。クリック可能ですが、3番目と7番目ではありません...その場合、コードを変更する必要があります。

にクラスを割り当てる場合は<td>、HTML を変更するだけで問題なく、コードは期待どおりに機能します。

<tr class="DesignedTableTR">
    <td></td>
    <td class="dont-toch-me"></td>
    <td></td>
    <td></td>
    <td></td>
    <td class="dont-toch-me"></td>
    <td></td>
</tr>

そしてあなたのコードでは次のことを行います:

$("tr.DesignedTableTR").on("click", "td:not(.dont-toch-me)", function(event){
    // ... here goes your code
});

したがって、イベント (および 1 つだけ) が存在し<tr>、の 2 番目の引数.onはフィルターです。これは、イベント委任と呼ばれます。

JSFiddle: http://jsfiddle.net/5zxun/9/

于 2013-09-08T14:21:55.387 に答える
2

あなたはこれを行うことができます:

// its zero-based so second td would be at 1st index, so bind all td's onclick instead of second td
$("tr.DesignedTableTR > td:not(:eq(1))").on("click",function(){
    alert("clicked :" + $(this).html());
});

ここで働くフィドル:http://jsfiddle.net/5zxun/2/

役立つことを願っています。

于 2013-09-08T12:05:46.030 に答える
1

td のインデックス値を使用して、必要に応じてクリック イベントを防ぐことができます。

$(document).ready(function(){
$('tr.DesignedTableTR td').click(function(){
    if($(this).index()==1){
    ev.preventDefault();
        return false;
    }else{
    alert($(this).index());
    //your code here
    }
});
});

JSFiddle: http://jsfiddle.net/5zxun/1/

于 2013-09-08T12:06:41.750 に答える