-1

すみません、長くなってしまうかもしれませんがよろしくお願いします。3 つの並べ替え可能な (jqueryUI) リストがあります。all-colls-list、coll -selected-list、およびcoll -grouped-list を一覧表示します。リストall-colls-list の項目をcoll-selected-listcoll -grouped-list に入れることができます。

したがって、たとえば、'list item' をcoll-selected-listcoll -grouped-list の両方に同時に入れることができ、アイテムはall-colls-listに保持されます。coll-selected-listにアイテムが追加されると、 all-colls-list内のリストアイテムに「selAdded」というクラス名が付けられます。coll-grouped-listにアイテムが追加されると、 all-colls-list内のリストアイテムに「groupAdded」というクラス名が付けられます。例:

<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からアイテムを削除すると、 all-colls-list内のそのアイテムのそれぞれのクラス名が削除されます。ただし、2 つのクラス名が存在し、1 つだけを削除すると、何らかの理由で両方が削除されます。したがって、「selAdded」を削除する<li class"selAdded groupAdded">Blah blha</li> と、そのままになるようです<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
                }
            }

どんな助けでも大歓迎です

4

3 に答える 3

0

if you still need to check if it have a class...

$("#all-colls-list li:contains(" + itemName + ") selAdded").each(
function() {
$(this).removeClass('selAdded');
dp-_other();
}
)
于 2012-07-31T13:03:01.867 に答える
0

希望どおりにクラスが追加および削除されているように見えますが、それらの存在をチェックしているコードが正しく機能していません。クラスをチェックしているとき、はではなく$(this)親を参照しているため、 には クラスもクラスもないため、「なし」と表示されます。<ul><li><ul>selAddedgroupAdded

フィドルで物をドラッグしている間、Chrome の組み込みインスペクターを使用してクラスを探していました。console.log($(this));エラーコンソールを見て$(this)、コードのその時点で実際に何が参照されているかを確認できるように使用しました。

于 2012-07-31T13:07:11.500 に答える
0

firebug または任意の検査ツールを使用すると、クラスが正しく削除されていることを確認できますが、コードのアラート部分が正しくありません

このフィドルを試してくださいhttp://jsfiddle.net/xf8j2/2/

このコードをクリーンアップして、いくつかの jquery オブジェクトをキャッシュする必要がありますが、

于 2012-07-31T13:11:56.353 に答える