use*_*406 6 jquery-ui jquery-selectors jquery-ui-sortable
我有几个可排序的列表,我可以将元素拖到每个列表中.
设置看起来像这样:
<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>
Run Code Online (Sandbox Code Playgroud)
JavaScript很简单,看起来像这样
(以下来自jQuery网站的例子)
<script>
$(function() {
$( "#sortable1, #sortable2" ).sortable({
connectWith: ".connectedSortable"
}).disableSelection();
});
</script>
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好...
题:
对于jQuery选择器,我可以使用ul类,而不是两个列表ID吗?
就像是:
<script>
$(function() {
$( ".connectedSortable" ).sortable({
connectWith: ".connectedSortable"
}).disableSelection();
});
</script>
Run Code Online (Sandbox Code Playgroud)
这是正确的吗?
我试过这个并且它有效......
...但我想知道为什么 jQuery网站给出了两个列表id作为选择器而不仅仅是类名的例子?如果我使用类作为选择器,我会遇到兼容性问题吗?
使用类名作为选择器的优点是我不必提前知道列表ID,理论上可以动态创建新列表?
什么是最佳实践和一种"错误证明"?
非常感谢!
按班级选择是可以的,并且您的脚本是正确的。
在按类选择元素时,我从未遇到过任何兼容性问题。
使用类名的优点是不必指定要匹配的所有元素的 ID。它的缺点是,如果在其他元素中错误地使用了该类,则可能会匹配比您预期更多的元素。
通过 ID 指定元素时,您确定只选择了您想要的元素。因此,当您确切地知道要匹配哪些 DOM 元素并且知道它们的 ID 时,它会很有用;正如您所注意到的,如果您动态创建元素,这是不可能的。
我认为在你的情况下,最佳实践是使用类名。不要使用您在 CSS 中匹配的类名;如果它负责格式化,您(或团队中的其他人)可能会忘记它提供的行为更改,并将其用于其他不相关的元素,仅用于格式化。这可能会导致错误。最好有单独的“行为”和“表示”类,在 CSS 中使用表示类,在 jQuery 中使用行为类来选择元素。
| 归档时间: |
|
| 查看次数: |
3222 次 |
| 最近记录: |