0

テーブルがあり、次の 2 つのことを行う jquery スクリプトがあります。

1)行がマウスオーバーされると、ホバークラスを追加して背景色が変更されます

2) 行に含まれるリンクは、行全体をリンクにするために使用されます。

<script type="text/javascript">
$(document).ready(function() {
    var target = 'table.mytable tr.allrows';
    var hoverClass = 'allrows_hover';

    $(target).each(function() {
        $(this).hover(
            function() {
                $(this).addClass(hoverClass);
                status = $(this).find('a').attr('href');
            },
                function() {
                    $(this).removeClass(hoverClass);
                    status = '';
                });
        $(this).click(function() {
            location = $(this).find('a').attr('href');
        });
        $(this).css('cursor', 'pointer');
    });
});
</script>

問題は、各行の1列にチェックボックスがあり、ボックスをチェックするとリンクがたどられることです。

上記からその列を除外することを検討しましたが、それを機能させることができません。誰かが td または - さらに良い - チェックボックス自体を除外する方法を見つけるのを手伝ってくれますか?

前もって感謝します。

4

3 に答える 3

1

うまくいくかもしれません

  $(this).click(function(e) {
                location = $(this).find('a').attr('href');
                e.stopPropagation();
                return false;
            });
于 2009-09-21T02:44:37.780 に答える
0

クリック ハンドラーがjQuery イベント オブジェクトを受け取ります。target 属性は、クリックを受け取った dom 要素を示す必要があります。あなたの場合、 e.target がチェックボックスの場合、場所に割り当てません..コードでテストされていませんが、同様のことを行いました

于 2009-09-21T02:44:03.897 に答える
0

さて、私には解決策があります。それが最善かどうかはわかりませんが...

チェックボックスを含むtdsにクラス「noclick」を追加しました。これにより、その行のいずれかのセルにマウスオーバーすると、行全体に hover クラスが追加されますが、「noclick」クラスを持つセルへのリンクは作成されません。

<script type="text/javascript">
$(document).ready(function() {
    var target = 'table.mytable tr.allrows td';
    var hoverClass = 'allrows_hover';

    $(target).each(function() {
        $(this).hover(
            function() {
                $(this).parent().addClass(hoverClass);
                status = $(this).parent().find('a').attr('href');
            },
                function() {
                $(this).parent().removeClass(hoverClass);
                    status = '';
                });
        $(this).not('td.noclick').click(function() {
            location = $(this).parent().find('a').attr('href');
        });
        $(this).not('td.noclick').css('cursor', 'pointer');
    });
});
</script>
于 2009-09-21T02:53:55.910 に答える