jQuery 选择器喜怒无常

标签 jquery jquery-selectors

过去两天我刚刚学习了 jQuery,所以我对此还很陌生。

我正在尝试构建一个简单的导航侧边栏。我将这些栏构建为表格,当用户浏览特定单元格时,该单元格会亮起,并且另一个子导航栏会出现在原始栏旁边。

原始栏出现在标题的正下方。所以我使用的语法是:

var headerHeight = $('#headerTable').height();
$('#selectStart').offset({left: 0, top: headerHeight});
....
<table id="selectStart" class="selector1">
    <tr><td id="sel1Projects" class="selector1">
....

到目前为止,一切都很好。现在我想要做到这一点,以便当用户单击该表中的 a 时,相应的子导航栏立即出现在第一个导航栏的右侧。所以我写了两个新表来测试它:

<table id="selectProjects" id="table2" class="selector2" class="table2">
<tr><td id="sel2Project1" class="selector2">
....
<table id="selectDevelopment" id="table2" class="selector2" class="table2">
<tr><td id="sel2Dev1" class="selector2">

但是这些选择器确实令人头疼。当我刚刚这样做时

var select1Width = $('#selectStart').width();
$('#selectProjects').offset({left: select1Width, top: headerHeight});
$('#selectDevelopment').offset({left: select1Width, top: headerHeight});

它工作得很好;然而,这不是很好的编码 - 我应该将所有类似的表格分组,以便我可以以相同的方式放置它们,然后只显示我希望用户当时看到的表格。

$('.selector2').offset(...)

就选择所有表格而言效果很好,但它也将所有 s 放在同一位置,因为出于样式目的它们都共享相同的类。然而到目前为止,这正是我所期望的。

$('.selector2 table').offset(...)

我希望这只是选择该类中的表。它没有做任何事情。是我打字方式有问题吗? 经过一番挫折后,我为每个类添加了第二个类“table2”。

$('#table2').offset(...)

还是什么都没有。所以我为他们添加了新类(class)

$('.table2').offset(...)

什么都没有;然而,使用他们共享的另一个类,selector2,确实有效。这不可能是不需要选择表格的问题,因为当我单独选择表格时,我得到了想要的结果。

那么我做错了什么,我不明白什么?

最佳答案

而不是 $('.selector2 table').offset(...)

试试这个

$('table.selector2').offset(...)

关于jQuery 选择器喜怒无常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8637521/

相关文章:

PHP JSON 响应包含 HTML header

javascript - 页面自动滚动到 HTML 的特定元素

jquery - 限制:nth-child results to visible elements

jquery - 如何在 jQuery 中选择具有 id 链的元素?

javascript - 将变量分配给 jQuery 中的包装器集不会使代码正常工作

jquery - 使用 Laravel 在 Bootstrap 模式中动态加载表单

php - 我网站的帖子表单上的 jQuery 文件 uploader 问题

javascript - jQuery 动画在滚动时延迟

jquery - 用jquery的closest()遍历td/tr

javascript - 从 span in/out of div 遍历 DOM