2016-03-03 5 views
7

Ich habe eine Funktion zum Verfolgen von Mausereignissen auf document, obwohl ich nur die Maus speziell für die Neugröße Erkennung Zweck at- dest an dieser Stelle ...Holen Sie sich unter Maus - aktuelle DOM-Element obj [während Ereignis-Größe ändern] jQuery-Ui

var BoolMouseDown = false; 
var BoolResizing = false; 
document.body.onmousedown = function() { 
    BoolMouseDown = true; 
}; 
document.body.onmouseup = function() { 
    BoolMouseDown = false; 
}; 

auf dem ui

Nebenbei bemerkt: Ziel ist es, Daten von jedem Elemente unter Maus zu bekommen, damit sie in einen neuen (div) Teil verwandeln konnten, die den Sieger überlebt

// called function on resiz event 

var ValueCurSourceCellId = ""; 
var ValueCurDestCellId = ""; 
function CurCellIdSet(val) { 
    if (BoolMouseDown) { 
     ValueCurDestCellId = val; 
     BoolMouseDown = false; 
    } 
    else { 
     if (BoolResizing) { 
      ValueCurDestCellId = val; 
     } 
     ValueCurSourceCellId = val; 
    } 
} 


var BoolHasCollided = false; 
$(gitem11) 
.mouseover(function() { 
    //cur mouse over = attribute of html-imput-hidden(curMoRszr="") 
    if (BoolMouseDown) return;//so if its Mouse Down - don't collect underlying element data 

    $elmHidData1.attr('curMoRszr', $(this).attr('id')); 
    CurCellIdSet($(this).attr('id')); 
}) 
.mousedown(function() { 
    BoolMouseDown = true; 
    $elmHidData1.attr('curMoRszr', $(this).attr('id')); 
    CurCellIdSet($(this).attr('id')); 
}) 
.mouseup(function() { 
    BoolMouseDown = false; 
    CurCellIdSet($(this).attr('id')); 
}) 
.resizable({ 

    handles: "e, s", ghost: true, 
    start: 
     // here 11 is the accident producer, 21 is the victim. 
     function() { 
      console.log("resize started"); 
      curg21initialpositionTop = $curg21.offset().top; 
      curg11initialpositionTop = $curg11.offset().top; 
      curg11initialHeight = $curg11.css("height").substring(0, 2); 
    }, 

    resize: 

     function (event, ui) { 

      var data1id = $elmHidData1.attr('curMoRszr'); 
      if (ui.size.height + curg11initialpositionTop > curg21initialpositionTop && ui.size.height + curg11initialpositionTop < curg21initialpositionTop + 50 + gap) 
      { 
       setRszble($curg11, $curg21); 
       BoolHasCollided = true; 
      } 

      $(gitem31).text("p: " + ui.size.height + "curg21initialuiposition:" + curg21initialuiposition + ", " + ui.position.top); 
     }, 
     stop: 
     // function to conclude the accident, give the new partial div a position and size 
}); 

während hier auf SO zu fragen, der nächste Beitrag ich gefunden habe ist This^

was ist der richtige Weg, um die Daten auf Resize-Ereignis zu sammeln?

+1

Ich würde das 'resize' Ereignis verwenden: resize: function (e, ui) {var x = e.clientX; var y = e.clientY; } ' – Twisty

+0

@Twisty Danke für Ihren Vorschlag, ich werde es versuchen .. – LoneXcoder

Antwort

0

In Javascript können Sie tun:

document.elementFromPoint(x, y);

wobei x und y wird die Mausposition (ich nehme an, Sie, dass die Zeigerposition selbst erhalten kann)

Von dort können Sie die Daten erhalten weg von dem Element, das du brauchst.