【问题标题】:Class loses one name when you drop another class name from div using Jquery当您使用 Jquery 从 div 中删除另一个类名时,类会丢失一个名称
【发布时间】:2012-07-29 05:54:09
【问题描述】:

抱歉,这篇文章可能有点长,请多多包涵。我有三个可排序的(jqueryUI)列表。列出 all-colls-listcoll-selected-listcoll-grouped-list。我可以将列表 all-colls-list 的项目放入 coll-selected-listcoll-grouped-list

例如,我可以同时将 'list item' 放入 coll-selected-listcoll-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-listcoll-selected-list 中删除项目时,它会在 all 中删除该项目的相应类名-colls-list。但是,如果存在两个类名,而我只删除了一个,由于某种原因,它会同时删除两个! 所以,如果我要从 &lt;li class"selAdded groupAdded"&gt;Blah blha&lt;/li&gt; 中删除“selAdded” 好像只剩下&lt;li&gt;Blah blha&lt;/li&gt;

我在这里做了一个小提琴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
                }
            }

任何帮助将不胜感激

【问题讨论】:

  • 为什么不使用 .removeClass("selAdded");

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


【解决方案1】:

如果你还需要检查它是否有一个类...

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

【讨论】:

    【解决方案2】:

    看起来像您希望的那样添加和删除类,但检查它们是否存在的代码无法正常工作。当您检查类时,$(this) 指的是父级&lt;ul&gt; 而不是&lt;li&gt;,因此显示“无”,因为&lt;ul&gt; 既没有selAdded 也没有groupAdded 类.

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

    【讨论】:

      【解决方案3】:

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

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

      虽然你应该清理这段代码并缓存一些 jquery 对象

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-04
        • 2015-05-10
        • 1970-01-01
        • 2015-08-25
        • 1970-01-01
        • 1970-01-01
        • 2015-02-20
        相关资源
        最近更新 更多