0

このフォーラムは初めてです

私は 2 週間から jquery を学びましたが、かなり未熟です。私のサイトはasp.net mvcで構築されており、jquery 1.4.1を使用しています

これがコードです

html

...

<% foreach (var item in Model.Amici)
    {%> 
    <div id="amico_<%= item.Id %>" idAmico="<%= item.Id %>">
    <%= item.Name %>
    </div> 
    <% } %>

....

脚本


    
    $(function() {
        $("div[id^='amico_']").draggable({ revert: "valid" });
        $("#droppable").droppable({
            activeClass: "ui-state-hover",
            hoverClass: "ui-state-active",
            drop: function(event, ui) {
                var index = $(".ui-draggable").attr('idAmico');
                $(this)
                   .addClass("ui-state-highlight")
                   .find("p")
                   .html("id = " + index);
            }
        });
    });

問題は、id 属性の値が常に 1 (インデックス変数) であるのに対し、1 と 2 であることです (赤い行) どこが間違っていますか?

返信ありがとうございます アルベルト

4

2 に答える 2

2

これが役立つかもしれない1つの簡単なメモです。

<% foreach (var item in Model.Amici)
{%> 
<div id="amico_" idAmico="">
    <%= item.Name %>
</div> 
<% } %>

この例では、jQueryセレクターに基づいて、各divのIDが「amico_1」、「amico_2」などになることを期待していると思います...おそらくアイテムIDに基づいていますか?いずれの場合も、id属性は一意である必要があります。

<% foreach (var item in Model.Amici)
{%> 
<div id="amico_<%= item.Id %>" idAmico="" class="drag">
    <%= item.Name %>
</div> 
<% } %>

divに「ドラッグ」のクラスを追加したことにも注意してください。

これは、セレクターをこれから更新できることを意味します。

$("div[id^='amico_']").draggable({ revert: "valid" });

これに

$( "。drag")。draggable({revert: "valid"});

そして私の最後の提案は、この行に小さな間違いがあるということです...

var index = $(".ui-draggable").attr('idAmico');

それは実際にあるべきです

var index = $(ui.draggable).attr('idAmico');

ドロップ可能なイベントに渡されるuiという名前のパラメーターがあることに注意してください。これには、現在ドラッグされている要素が含まれます。

お役に立てれば。

于 2011-02-18T08:46:44.623 に答える
0

これは、ドロップ関数で、ドロップ$(".ui-draggable")されるオブジェクトの子オブジェクトではなく、これに一致するページ上の任意のクラスを任意にプルしているためです。

私が見つけたドキュメント(http://jqueryui.com/demos/droppable/#event-drop)から、ドロップされた要素にアクセスできますui.draggable

于 2011-02-18T08:37:50.347 に答える