2013-03-21 1 views
2

Можно ли включить перетаскивание, когда мышь нажата на дочерние элементы div и перетащить ли родителя?JQuery Draggable при нажатии на DIV или его дочерних элементах

В этом примере я пытаюсь заставить draggable работать как для div, так и для select. Когда вы нажимаете кнопку выбора и пытаетесь перетащить, ничего не происходит.

http://jsfiddle.net/Trhs4/5/

<div id="draggable" class="ui-widget-content"> 
<select> 
<option>Drag Me</option> 
</select> 
</div> 

$(function() { 
    $("#draggable").draggable(); 
}); 

ответ

1

Вот пример: LIVE DEMO

Это не очень совместимы с вашим списком, потому что поймать событие мыши, чтобы отобразить его параметры, но это работает.

$(document).ready(function(){ 
     var click = false, 
     top = null, 
     left = null; 

    $(document).bind('mousemove', function (e) { 
     if (click == true) { 
      $('#draggable').css({ 
      left: e.pageX - left, 
      top: e.pageY - top 
      }); 
     } 
    }); 

    $('#draggable').draggable().click(function(e) { 
     top = e.pageY - $('#draggable').position().top; 
     left = e.pageX - $('#draggable').position().left; 
     click = !click; 
     return false; 
    }); 

    $('html').click(function() { 
     click = false; 
    }); 
}); 
+0

Спасибо. Это сработает. – user1167466

0

Я не думаю, что его можно из-за того, как выбирает работу с различными браузерами. Вы можете создать свой собственный выбор с помощью UL и LI.

Или вы могли бы добавить [перетащить меня] над выбором, который пользователи могли бы скрыть. < - это более удобно в любом случае.

0

Я не думаю, что это возможно из-за обработчика событий. <option> имеет свой собственный обработчик событий, поэтому он предотвращает перетаскивание события & из JQuery для запуска. Вы можете попробовать другие объекты, такие как <ul> и <li>. Пожалуйста, обратите внимание на этот образец: jquery sample