2011-06-23 19 views
0

2つのリストには強度があり、もう1つは機会があり、アイテムをドラッグ&ドロップすることで、ドロップされたアイテムをリストから削除することができました。リスト、代わりにはorginalリストから削除取得、誰かがリストから削除された項目を削除する方法を私を助けることができ、ここに私のコードはJqueryドロップされたリストからアイテムを削除する

<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" 
    rel="stylesheet" type="text/css" /> 
<script src="js/jquery.min.js"></script> 
<script src="js/jquery-ui.js"></script> 




<style> 
#strength, #opportunity { list-style-type: none; margin: 0; padding: 0; float: left; margin-right: 10px; } 
#strength li, #opportunity li { margin: 0 5px 5px 5px; padding: 5px; font-size: 1.2em; width: 120px; } 
</style> 


<script> 
$(function() { 

    //$("#opportunity li").bind('click', fn); 


    var fn = function(event, ui) { 
      var self = $(this); 
      var itemID = ui.draggable.attr("id"); 

      if(itemID > 0){ 
       //$("#strength li").append($(ui.draggable[2]).removeAttr("style")); 
       //alert(document.getElementById(itemID).innerHTML); 
       var itemval; 
       $("#" + itemID).remove(); 

       //document.getElementById(itemID).style.display='none'; 
       //alert(self.id); 
      } 
     }; 


    $("#opportunity").sortable({ 
     revert: false 
    }); 


    $("#strength li").draggable({ 
     connectToSortable: "#opportunity", 
     helper: "clone", 
     revert: "invalid" 
    }); 

    $("#strength li").droppable({ drop: fn }); 

    $("ul, li").disableSelection(); 

}); 


</script> 




<div class="demo"> 

<ul id="strength"> 
    <li id="1" class="ui-state-highlight">Strength 1</li> 
    <li id="2" class="ui-state-highlight">Strength 2</li> 
    <li id="3" class="ui-state-highlight">Strength 3</li> 
    <li id="4" class="ui-state-highlight">Strength 4</li> 
</ul> 

<ul id="opportunity"> 
    <li id="0" class="ui-state-default">Opportunity 1</li> 
    <li id="0" class="ui-state-default">Opportunity 2</li> 
    <li id="0" class="ui-state-default">Opportunity 3</li> 
    <li id="0" class="ui-state-default">Opportunity 4</li> 
    <li id="0" class="ui-state-default">Opportunity 5</li> 
</ul> 

</div><!-- End demo --> 

答えて

0

あなたがにしてアイテムをドロップしたときので、これは働いていない理由は、右側のリストは実際には新しいリストにあります。

$("#strength li").droppable({ drop: fn }); 

もう動作しません。最初のリストのアイテムを上にドラッグすると機能しますが、削除するだけです。あなたがこの中に追加した場合

var fn2 = function(event, ui) { 
    $(this).remove(); 
}; 

$("#strength li").draggable({ 
    connectToSortable: "#opportunity", 
    helper: "clone", 
    revert: "invalid", 
    stop: fn2 
}); 

$("#strength li").draggable({ 
    connectToSortable: "#opportunity", 
    helper: "clone", 
    revert: "invalid", 
    stop: function(){$(this).remove();} 
}); 

またはあなたのコーディングスタイルごととして:

代わりにこれを使用

stop: function(event, ui){if(!event){$(this).remove();}} 

それがあることから、左側のリストを停止します自分自身を削除することができます。 (ハックのビット、イベントが空であることに依存しないよりよい方法が必要です)。

+0

上記の例は機能しません。代わりに、強力リストから項目を削除しながら機会にドラッグします。それは、力から機会へとドラッグすると、それは相手に追加されるべきであり、同じアイテムを機会から戻すとき、それは機会リストから取り除かなければならないが、強さは同じままである。 – lucy

+0

あなたがそれをドロップインしたときに強度の削除ボタンを持っているのはなぜですか?これは理にかなっています。それ以外の場合は、2番目のリストをドラッグ可能にする必要がありますが、単に長さの項目をドラッグ可能にする必要があります。これはかなり複雑です。 –

+0

ええ、顧客はそれを望んでいない、代わりにアイテムを削除したいアイテムからアイテムをドラッグするとき。私はあなたが投稿したコードを追加しましたが、今は動作しません。 – lucy

0

ここでは、私は削除されたリストから項目を削除する方法をいくつか質問への答えです。あなたがしなければならないことは、この関数を$( "#strength")と呼ぶことです。droppable({drop:fn});これは、 "fn"を呼び出します。

<script type="text/javascript" language="javascript"> 
    $(function() { 

     var fn = function (event, ui) { 
      var self = $(this); 
      var itemID = ui.draggable.attr("id"); 
      if (itemID > 0) { 
       var itemval = document.getElementById(itemID).innerHTML; 
       $("#" + itemID).remove(); 
       document.getElementById(itemID).style.display = 'none'; 
       $("#" + itemID).remove(); 

       var newitemtoadd; 
       newitemtoadd = '<li id="' + itemID + '" class="ui-state-highlight ui-draggable ui-droppable">' + itemval + '</li>'; 

       $("ul#strength").append(newitemtoadd); 
       $("#strength li").draggable({ 
        connectToSortable: "#opportunity", 
        helper: "clone", 
        revert: "invalid" 
       }); 
      } 
     }; 


     $("#opportunity").sortable({ 
      revert: false 
     }); 


     $("#strength li").draggable({ 
      connectToSortable: "#opportunity", 
      helper: "clone", 
      revert: "invalid" 
     }); 

     $("#strength").droppable({ drop: fn }); 

     $("ul, li").disableSelection(); 

    }); 


</script> 
関連する問題