滑动干扰拖动

时间:2012-11-20 11:06:10

标签: javascript css css3

我正在使用iosSlider插件,以便让用户在元素之间滑动 我还想在每张幻灯片上放置一个可拖动的文本。为此我使用jquery UI(只有可拖动的包) 问题是,当我拖动文本时,滑块启动并干扰拖动。有没有什么可以在拖动时禁用滑动的原因?

这是jsfiddle:http://jsfiddle.net/Uy4Gp/
HTML代码:

<div class="iosSlider">
    <div class="slider">
        <div style="background-color: green;" class="item">
            <div class="drag">text1</div>
        </div>

        <div style="background-color: yellow;" class="item">
            <div class="drag">text2</div>
        </div>

        <div style="background-color: red;" class="item">
            <div class="drag">text3</div>
        </div>

        <div style="background-color: blue;" class="item">
            <div class="drag">text4</div>
        </div>
    </div>
</div>

JavaScript代码:

    $(document).ready(function() {

        $( ".drag" ).draggable({ containment: "parent" });

        $('.iosSlider').iosSlider({
            desktopClickDrag: true,
            snapToChildren: true
        });
    });

CSS代码:

.iosSlider {
  width: 400px;
  height: 100px;
}
.iosSlider .slider {
  width: 100%;
  height: 100%;
}
.iosSlider .slider .item {
  position: relative;
  top: 0;
  left: 0;
  width: 400px;
  height: 100px;
  background: #fff;
  margin: 0 0 0 0;
}

更新
我尝试在可拖动元素上添加事件:当拖动开始时 - &gt;禁用滑块以及拖动结束时 - &gt;启用滑块:

$( ".drag" ).draggable({
    containment: "parent",
    start: function(event, ui) { $('.iosSlider').iosSlider('lock'); },
    stop: function(event, ui) { $('.iosSlider').iosSlider('unlock'); }
});

我开始看起来很正常但是当拖动文本并让鼠标单击时,滑块开始移动。这是一个例子:http://jsfiddle.net/Uy4Gp/1/
知道如何锁定滑块直到文本拖动的结束?

1 个答案:

答案 0 :(得分:0)

此问题的解决方案是在mousedown和mouseup事件中锁定和解锁滑块:

$( ".drag" )
    .mousedown(function(event) { $('.iosSlider').iosSlider('lock');})
    .mouseup(function(event) { $('.iosSlider').iosSlider('unlock');});

这是jsfiddle:http://jsfiddle.net/Uy4Gp/2/