jQuery选择器的问题

时间:2011-08-20 02:01:10

标签: jquery jquery-selectors

我有这张桌子:

<table>
    <tr class="row">
        <td>Title
            <div class="action">hello</div>
        </td>    
        <td>Rorow</td>
    </tr>
    <tr class="row">
        <td>Title
            <div class="action">hello</div>
        </td>  
        <td>Rorow</td>
    </tr>
</table>

当我将鼠标悬停在行上时,我想让孩子消失。所以我做了这个,但它也选择了所有其他动作:

$(".row").hover(
        function () {
            $(".action").css("visibility","hidden");
        },
        function () {
            $(".action").css("visibility","visible");
        }
    ); 

我错过了什么吗?

3 个答案:

答案 0 :(得分:2)

现在,当你将鼠标悬停在一行上时,你告诉每个带有“action”类的元素都会消失。相反,您可以使用this来引用光标经过的行,然后找到它的子“action”元素并将其隐藏。

$(".row").hover(
    function () {
        $(this).find(".action").hide();
    },
    function () {
        $(this).find(".action").show();
    }
); 

答案 1 :(得分:2)

只需使用.row

$(this)父元素中查找该类
$(".row").hover(
    function () {
        //$(this) refers to the row that received the hover event
        $(this).find(".action").hide();
    },
    function () {
        $(this).find(".action").show();
    }
);

这是a working jsFiddle

答案 2 :(得分:2)

您也可以在纯CSS中执行此操作。

tr.row .action {
    display:block;
}

tr.row:hover .action {
    display:none;
}