2011-08-08 46 views
1

我在同一个x轴上有两个可拖动元素。我想重现一个滑块效果,我的意思是滑块1不能去后滑块2.阻止可拖动元素出现在另一个

我不知道该怎么做。谁能帮我?

我使用jQuery和jQuery UI中的可拖动插件。

编辑:

代码: HTML:

<div id="chrono-bar"> 
<div id="slider-left" class="slider-left draggable obstacle"></div> 
<div id="slider-right" class="slider-right draggable"></div> 
<ul class="chrono-bar-ul block"> 
    <li class="chrono-bar-item">Janvier</li> 
    <li class="chrono-bar-item">Février</li> 
    <li class="chrono-bar-item">Mars</li> 
    <li class="chrono-bar-item">Avril</li> 
    <li class="chrono-bar-item">Mai</li> 
    <li class="chrono-bar-item">Juin</li> 
    <li class="chrono-bar-item">Juillet</li> 
    <li class="chrono-bar-item">Aout</li> 
    <li class="chrono-bar-item">Septembre</li> 
    <li class="chrono-bar-item">Octobre</li> 
    <li class="chrono-bar-item">Novembre</li> 
    <li class="chrono-bar-item last">Décembre</li> 
</ul> 
<div class="chrono-bar-footer"> 
    <div class="line"></div> 
</div> 

的Javascript:

<script> 
$("#slider-left").draggable({ 
    axis: 'x', 
    containment: 'parent', 
    'snap': '#slider-right', 
    collide: 'block', 
    drag: function() { 
     console.log($('#slider-left').offset().left); 
    } 
}); 
$("#slider-right").draggable({ axis: 'x', containment: 'parent','snap': '#slider-left' }); 

+0

请发布你的代码你做了什么,我无法赶上你的问题 –

+0

没关系我编辑我的帖子。 – Sebastien

回答

0

我的解决方案是在每次拖动收容区域时进行更改。我跟大家分享我的代码:

var left = $('#chrono-bar').offset().left; 
$("#slider-left").draggable({ 
    axis: 'x', 
    containment: [left,100,left+944-46,100], 
    'snap': '#slider-right', 
    collide: 'block', 
    drag: function() { 
     $("#slider-right").draggable("option", "containment", [$(this).position().left+left+46-5, 100, left+944-46, 1000]); 
     autoWidth = $("#slider-right").position().left - $(this).position().left-46; 
     $('#slider-middle-auto').css({width:autoWidth+'px', left: $(this).position().left + 46+'px'}); 
     $("#slider-left").css({'background-position':'0px -68px'}); 
    }, 
    stop:function(e) { 
     autoWidth = $("#slider-right").position().left - $(this).position().left-46; 
     $('#slider-middle-auto').css({width:autoWidth+'px', left: $(this).position().left + 46+'px'}); 
     $("#slider-left").css({'background-position':'0px 0px'}); 
     refreshListEvent(e); 
    }, 
    grid : [77,77] 
}); 
$("#slider-right").draggable({ 
    axis: 'x', 
    containment: 'parent', 
    'snap': '#slider-left', 
    drag : function() { 
     $("#slider-left").draggable("option", "containment", [left-5, 100, $(this).position().left+left, 1000]); 
     autoWidth = $(this).position().left - $("#slider-left").position().left - 46; 
     $('#slider-middle-auto').css({width:autoWidth+'px', left: $("#slider-left").position().left + 46+'px'}); 
     $("#slider-right").css({'background-position':'0px -68px'}); 
    }, 
    stop:function(e) { 
     autoWidth = $(this).position().left - $("#slider-left").position().left - 46; 
     $('#slider-middle-auto').css({width:autoWidth+'px', left: $("#slider-left").position().left + 46+'px'}); 
     $("#slider-right").css({'background-position':'0px 0px'}); 
     refreshListEvent(e); 
    }, 
    grid : [77,77] 
}); 

$("#slider-right").draggable("option", "containment", [$("#slider-left").position().left+left+46, 100, left+944-46, 1000]); 
$("#slider-left").draggable("option", "containment", [left-5, 100, $("#slider-right").position().left+left, 1000]); 

autoWidth = $("#slider-right").position().left - $("#slider-left").position().left - 46; 
$('#slider-middle-auto').css({width:autoWidth+'px', left: $("#slider-left").position().left + 46+'px'}); 

有一些错误,但我认为这是一个良好的开端!

0

containmentslider-left应该slider-right如果您不希望滑块左移后滑块右移。谢谢。

相关问题