Wie kann ich erzwingen, jquery zentrieren eines Elements beim ziehen zu und schnappte in einen anderen container?

Möchte ich einige square-shaped draggable-Objekten (in diesem Fall nur <td> Kästen mit zahlen in Ihnen) in der Lage sein zu schnappen, um ein paar leere Zellen in einer Tabelle und ausrichten an der Mitte dieser Zellen (leere td-Boxen), nicht die (äußeren) Rand-jene Zellen, die ist, was ist zu tun scheint, standardmäßig.

Hier ist mein script.:

<script type="text/javascript">
 $(document).ready(function () {
     $(".inputs div").draggable( {
       snap: ".spaces"
     });    
 });    
</script>

EDIT: Hier ist die gesamte Datei

 <!DOCTYPE html>
  <head>
   <title>Draggable</title>
   <script type="text/javascript" src="jquery-1.7.2.min.js"></script>
   <script type="text/javascript" src="jquery-ui-1.8.21.custom.min.js"></script>
   <script type="text/javascript" src="jquery.ui.touch-punch.min.js"></script>
   <style>
    .block {
        z-index:9999;
        cursor:move;
    }
    li {
        list-style:none;
    }
    tr {
        border: 2px solid black;
    }
    table {
        border: 2px solid black;
    }
    .inputs div {
        float:left;
        background-color:#FFFFFF;
        color:#004E66;
        font-size:x-large;
        margin:2px;
        padding:20px;
        border:1px solid black;
    }
    .spaces td {
        background-color:#666666;
        margin:2px;
        padding:36px;
        border:2px solid black;
    }
 </style>
</head>

<body>
<form id="form1">
  <div class="inputs">
    <div>1</div>
    <div>2</div>
    <div>3</div>    
    <div>4</div>
    <div>5</div>
    <div>6</div>
  </div>
  <br/>
  <table class="spaces">
    <tr>
        <td></td>
        <td></td>
        <td></td>
    </tr>
    <tr>
        <td></td>
        <td></td>
        <td></td>
    </tr>
  </table>
</form>
<!-- here we are telling jquery to make each element inside of class 'inputs' draggable -->
<script type="text/javascript">
   $(document).ready(function () {
      $(".inputs div").draggable( {
         snap: ".spaces"
      }).center();  
  });   
</script>

Hier ist eine grobe text-basierte Darstellung, was Los ist

-----+---------+ 
XXXXXXXXXXX X| 
| | 
| Y-x| 
| X| 
-----+-------+X| 
| X| 
  • wenn die obige box ist eine td-Zelle in der rechten Ecke des obersten tr Zeile
  • dann X ist, wo die Elemente sind derzeit kleben (natürlich nicht
    großer, ich bin gerade zeigen die Orte, wo es steckt...tatsächlich habe ich entfernt
    einige der X ist zu zeigen, wie Sie einrastet, um die Ecke, sobald es erreicht ein
    gewisse Nähe zu ihm...)
  • im Grunde dieses Modell veranschaulicht, dass nur die äußeren Ränder der Tabelle
    habe "gravity" mit Bezug auf das draggable-element. Was ich wirklich will es
    zu tun ist, rasten in die td-Zellen mit Abstoßung ALLE Kanten, die nicht
    mit der Heranziehung zu den externen.
  • Y die gewünschten snap-Lage für das gezogene element.
  • Schließlich für die Präsentation der Gründe, warum ich wollen würde, dass das element einrasten
    mit einer Art von übergang, anstatt abrupt zu springen...
  • Wollen Sie die draggable-Elemente werden vertikal zentriert und horizonally innerhalb der tds? Weil Sie nicht passen würde, sehr schön.
  • 4000 views. 9 upvotes auf die richtige Antwort. 4 auf die Frage. moochers. Zeichen in Euch Chaoten!!!
InformationsquelleAutor boulder_ruby | 2012-07-09
Schreibe einen Kommentar