2011-11-07 63 views
6

我有几个可排序的列表,我可以将元素拖动到每个列表。jQuery可排序选择器(“id”与“class”)?

的设置看起来是这样的:

<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类,而不是两个列表idids?

喜欢的东西:

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

这会是正确的吗?

我已经试过这和它的作品...

...但我不知道为什么 jQuery的网站给人以既列表ID作为选择,而不仅仅是类名的例子?我可以遇到兼容性问题,如果我使用类作为选择器?

使用类名作为选择器的好处是,我不必事先知道列表id,理论上可以立即创建新列表?

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

非常感谢!

回答

2

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

我从来没有遇到任何兼容性问题,而他们的类选择元素。

使用类名具有不必指定要匹配的所有元素的ID的优点。它的缺点是匹配比您打算的更多元素的可能性,如果该类在其他元素中被错误使用的话。

通过ID指定元素时,您确定只选择了您想要的元素。因此,当您确切知道要匹配哪些DOM元素并知道其ID时非常有用。正如你注意到的,如果你在飞行中创建元素,这可能是不可能的。

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

+0

非常感谢!这给了我一个关于如何处理列表的好主意! – user1033406

+0

真棒加法,谢谢 – user1033406