首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery使用parents查找Div

JQuery使用parents查找Div
EN

Stack Overflow用户
提问于 2013-04-26 22:14:30
回答 3查看 139关注 0票数 0

我有一整桌的复选框。每行都是一个事件,每个复选框都是需要为该事件完成的任务。我希望能够用选中它的用户的首字母替换该复选框。我也希望能够选择下面的复选框下的div被点击,这样我就可以显示它,因为它包含我的首字母。我也在使用Ruby on Rails。

代码语言:javascript
复制
<td class='completed_box'  id='complete_raw_footage_<%= check_list.id %>'>
        <%= f.check_box :raw_footage_check, :class => 'task_check', :id => 'check_list_raw_footage_check_' + check_list.id.to_s, :category => 'raw_footage', :check_list_id => check_list.id, :style => ("display:none" if check_list.raw_footage_user_id != nil) %>    
        <div class='initials' style="<%= 'display:none;' if check_list.raw_footage_user_id == nil %>">
            <div id='raw_footage_<%= check_list.id %>' title='<%= check_list.event.name %>' class='hidden_dialog'>
                    <b>Task Completed:</b> Raw Footage Recieved <br />
                    <b>Task Completed By:</b> <%= check_list.raw_footage_user_id.name rescue current_user.name %><br />
                    <b>Task Completed At:</b> <%= check_list.raw_footage_date.strftime("%F %r") rescue Time.now.strftime("%F %r") %>
            </div>
            <%= check_list.raw_footage_user_id.initials rescue current_user.initials%> <br />
            <%= check_list.raw_footage_date.strftime("%-m/%d") rescue Time.now.strftime("%-m/%d") %>
        </div>
    </td>

因此,当点击带有类'task_check‘的复选框时,它将只找到下一个类'initials’,并将css更改为display:inline。如果您需要更多信息,请让我知道。

代码语言:javascript
复制
$('.completed_box').children('.initials').css('display','inline')

这是我最初使用的,但它将每个带有类首字母的div都转换为display:inline。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-26 22:18:44

您需要使用this作为起点,您可以使用.closest()查找特定的父级,并使用.find()在同一父级下查找另一个下级。使用.closest().find()不太容易改变,因为它们不依赖于确切的位置或父代的确切数量-它们只依赖于层次结构的同一分支。

我不确定我是否完全遵循了您的模板HTML,但可能是这样的:

代码语言:javascript
复制
$(this).closest(".completed_box").find(".initials").css('display','inline')
票数 1
EN

Stack Overflow用户

发布于 2013-04-26 22:19:19

您可以使用.next()查找下一个元素

代码语言:javascript
复制
$('.task_check').click(function(){
    var $this = $(this);
    if( $this.is(':checked') ) {
        $(this).next('.initials').css('display','inline')
    } else {
        $(this).next('.initials').hide();
    }
})
票数 1
EN

Stack Overflow用户

发布于 2013-04-26 22:40:30

你也可以用CSS做到这一点。

代码语言:javascript
复制
.task_check:checked + .initials{display:inline-block;}

根据W3School的说法,它应该得到所有主流浏览器的支持。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16238662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档