2011-12-09 54 views
0

我的代碼是如下:獲取可拖動元素的值

$(function() { 
    $("#products li").draggable({ 
     cursor:' move', 
     opacity: 0.3, 
     revert:  true, 
     proxy:  'clone', 
    }); 
    $("tr").droppable({ 
     drop:function(e,source){ 
      alert (source); 
      var name = $("#products li").attr("id"); 
      alert (name); 
      var pid = $(this.draggable).attr("id") ; 
      var add = $(this).text() ; 
      var sum = pid+"-"+add; 
      alert(sum); 
      $.ajax({ 
       type:  "POST", 
       url:  "add-shipment.php", 
       data:  "address="+sum, 
       success: alert(sum+"has addes into database") 
       }); 
     }, 
     out:function(){ 

     } 
    }); 
}); 

的問題是由PHP動態生成的列表。它只給出第一個元素的id

回答

1

正在拖動的元素正在作爲source變量傳遞到您的函數中。

因此,爲了得到這些值在您的例子中,使用:

var pid = source.draggable.id; 
var name = source.draggable.attr("name"); 
var add = source.draggable.text() 

完整的示例:

$(function() { 
    $("#products li").draggable({ 
     cursor:' move', 
     opacity: 0.3, 
     revert:  true, 
     proxy:  'clone', 
    }); 

    $("tr").droppable({ 
     drop: function(e, source) { 
      var $el = source.draggable; 

      var name = $el.attr("id"); 
      var pid = $el.attr("id"); 
      var add = $el.text(); 
      var sum = pid + "-" + add; 

      alert(sum); 

      $.ajax({ 
       type:  "POST", 
       url:  "add-shipment.php", 
       data:  "address="+sum, 
       success: alert(sum+"has addes into database") 
      }); 
     }, 
     out: function(){ 

     } 
    }); 
}); 
+0

太謝謝你了。它正在工作。第二件事是如果我把錶行的id或class名放在drop中而不是那麼它只接受第一行。 –