当您使用Jquery从div中删除另一个类名时,类将丢失一个名称

时间:2012-07-31 12:53:19

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

对不起,这可能很长,请耐心等待。我有三个可排序(jqueryUI)列表。列出 all-colls-list coll-selected-list coll-grouped-list 。我可以将 all-colls-list 列表中的项目放入 coll-selected-list coll-grouped-list

例如,我可以同时将'list item'放入 coll-selected-list coll-grouped-list ,该项目将会保留在 all-colls-list 中。将项目添加到 coll-selected-list 后,类名“selAdded”将附加到 all-colls-list 中的列表项。将项目添加到 coll-grouped-list 时,类名“groupAdded”将附加到 all-colls-list 中的列表项。  例如:

<li class"selAdded">Blah blha</li> OR
<li class"groupAdded">Blah blha</li> OR (when item is put in both lists)
<li class"selAdded groupAdded">Blah blha</li>

当我从 coll-grouped-list coll-selected-list 中删除该项目时,会在所有内容中删除该项目的相应班级名称-colls列表即可。但是,如果存在两个类名,并且我只删除一个,由于某种原因,它会删除两个! 所以,如果我要从<li class"selAdded groupAdded">Blah blha</li>删除“selAdded” 它似乎只留下<li>Blah blha</li>

我在这里做了一个小提琴http://jsfiddle.net/noscirre/xf8j2/

这是删除班级名称的代码:

if ($("#all-colls-list li:contains(" + itemName + ")").hasClass("selAdded")) {
                $("#all-colls-list li:contains(" + itemName + ")").removeClass("selAdded"); }

这是在删除类后检查类是否存在的代码:

receive: function (event, ui) {
                alert($(this).attr('class'));
                if ($(this).hasClass("groupAdded") && $(this).hasClass("selAdded")) {
                    alert("both");
                    //Do nothing
                }
                if ($(this).hasClass("groupAdded") && !$(this).hasClass("selAdded")) {
                    alert("group"); //Do nothing
                } 
                if (!$(this).hasClass("groupAdded") && $(this).hasClass("selAdded")) {
                    alert("sel"); //Do nothing
                }
                if (!$(this).hasClass("groupAdded") && !$(this).hasClass("selAdded")) {
                    alert("none"); //Do nothing
                }
            }

非常感谢任何帮助

3 个答案:

答案 0 :(得分:0)

如果你还需要检查它是否有班级......

$("#all-colls-list li:contains(" + itemName + ") selAdded").each(
function() {
$(this).removeClass('selAdded');
dp-_other();
}
)

答案 1 :(得分:0)

看起来像你想要的那样添加和删除类,但是检查它们存在的代码是不能正常工作的。当您检查课程时,$(this)指的是父<ul>而不是<li>,因此显示'无',因为<ul>没有{ {1}}也不是selAdded类。

当我在你的小提琴中拖动东西时,我正在使用Chrome的内置检查员来查找课程。我使用了groupAdded,因此我可以查看错误控制台,以确保代码中的console.log($(this));实际指的是什么。

答案 2 :(得分:0)

如果您使用firebug或任何检查工具,您可以看到正确删除了类但代码的警报部分不正确

试试这个小提琴http://jsfiddle.net/xf8j2/2/

虽然您应该清理此代码并缓存一些jquery对象