【问题标题】:jQuery sortable selector ("id" vs. "class")?jQuery 可排序选择器(“id”与“class”)?
【发布时间】:2011-12-23 11:21:06
【问题描述】:

我有几个可排序的列表,我可以将元素拖到每个列表中。

设置如下所示:

<ul id="sortable1" class="connectedSortable">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>

<ul id="sortable2" class="connectedSortable">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>

JavaScript 很简单,看起来像这样

(以下示例来自 jQuery 网站)

<script>
$(function() {
    $( "#sortable1, #sortable2" ).sortable({
        connectWith: ".connectedSortable"
    }).disableSelection();
});
</script>

到目前为止一切都很好......

问题:

对于 jQuery 选择器,我可以使用 ul 类,而不是两个列表 id 吗?

类似:

<script>
$(function() {
    $( ".connectedSortable" ).sortable({
        connectWith: ".connectedSortable"
    }).disableSelection();
});
</script>

这是正确的吗?

我试过了,效果很好……

...但我想知道 为什么 jQuery 网站给出的示例将两个列表 ID 作为选择器而不仅仅是类名?如果我将类用作选择器,我会遇到兼容性问题吗?

使用类名作为选择器的好处是我不必提前知道列表 ID,理论上可以即时创建新列表?

最佳实践和“防错”类型是什么?

非常感谢!

【问题讨论】:

    标签: jquery-ui jquery-selectors jquery-ui-sortable


    【解决方案1】:

    按类选择是可以的,你的脚本是正确的。

    在按类选择元素时,我从未遇到任何兼容性问题。

    使用类名的好处是不必指定要匹配的所有元素的 ID。它的缺点是,如果在其他元素中错误地使用了该类,则可能会匹配比您想要的更多的元素。

    当通过 ID 指定元素时,您确定您只选择了您想要的元素。因此,当您确切知道要匹配哪些 DOM 元素并且知道它们的 ID 时,它会很有用;正如您所注意到的,如果您动态创建元素,这可能是不可能的。

    我认为在您的情况下,最佳做法是使用类名。不要在 CSS 中使用你匹配的类名;如果它负责格式化,您(或团队中的其他人)可能会忘记它提供的行为改变,并将其用于其他不相关的元素,仅用于格式化。这可能会导致错误。最好有单独的 'behavioral' 和 'presentation' 类,使用 CSS 中的表现类,以及在 jQuery 中选择元素的行为类。

    【讨论】:

    • 非常感谢!这让我对如何处理列表有了一个很好的了解!
    猜你喜欢
    • 2013-10-18
    • 2013-03-01
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多