Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
don';如果它是使用jQuery的DIV的开始,是否向左滑动?_Jquery - Fatal编程技术网

don';如果它是使用jQuery的DIV的开始,是否向左滑动?

don';如果它是使用jQuery的DIV的开始,是否向左滑动?,jquery,Jquery,我试图弄清楚如何禁用一个按钮,如果它是DIV的开始,那么该按钮用于使用jquery向左滑动DIV 基本上一切正常,但问题是,如果用户单击div开头的左滑动按钮,它将向左滑动到一个空白区域 这是我当前的代码: <script> $( "#right" ).click(function() { $( ".block" ).animate({ "margin-left": "-=580px" }, "slow" ); }); $( "#left" ).click(function(){ $

我试图弄清楚如何禁用一个按钮,如果它是DIV的开始,那么该按钮用于使用jquery向左滑动DIV

基本上一切正常,但问题是,如果用户单击div开头的左滑动按钮,它将向左滑动到一个空白区域

这是我当前的代码:

<script>
$( "#right" ).click(function() {
$( ".block" ).animate({ "margin-left": "-=580px" }, "slow" );
});
$( "#left" ).click(function(){
$( ".block" ).animate({ "margin-left": "+=580px" }, "slow" );
});

</script>

你的代码不是很有用,但无论如何。在进一步移动图元之前,可以尝试检查或删除图元。(具体取决于您需要什么)

您可以在将.block元素向左移动之前添加它

var offset = $( ".block" ).offset(); 
var leftOffset = offset.left;
现在,您可以在每次移动元素时检查leftOffset是多少

现在,您应该不难根据该值确定何时移动和何时不移动块,对吗?:)(一点数学对你有好处)

如果你需要更多的帮助,请告诉我

编辑

您可以在左侧的单击事件中尝试以下操作:

var offset = $( ".block" ).offset(); 
var leftOffset = offset.left;

if(leftOffset<580)
    $( ".block" ).animate({ "margin-left": "+=580px" }, "slow" ); 
var offset=$(“.block”).offset();
var leftOffset=offset.left;
if(leftOffset工作样本(参见下面的fiddle)。
我使用了marginLeft属性,并将其与父级width&div width进行比较,以限制移动,使其可见

现在使用此代码:

  • 如果内容已经在移动(如果您双击按钮),我们不会启动另一个移动以避免离开屏幕
  • 如果你有更大/更小的屏幕或div大小,没问题
  • 如果滚动到div的末尾,最后一个滚动将被调整为仍然显示到末尾的所有div(如果存在,则使用父级填充)
代码:

$(“#右”)。单击(函数(){
如果(!$(“.block”).是(“:动画”){
var-slideStep=280;
var marg=$(“.block”).css('marginLeft').replace('px','');
var newMargin=parseInt(marg,10)-parseInt(slideStep,10);
var maxMarg=$(“.block”).width()+12;
var winWidth=$(“#幻灯片”).width();

如果(Math.abs(newMargin)你能为同样的问题创建fiddle吗?提供fiddle,并尝试更多地解释你的问题使用offset()来计算你的.block移动了多少。如果它是零或更小,就不应该添加左边距。@trainoasis,有没有可能出现某种示例?这对我来说不起作用,因为它会检查窗口宽度!如果我将div放在页面的中心,而容器div有左边距/顶部距/右侧距值呢?顺便说一下,这就是我的情况。如果您想在项目位于窗口外时停止滑动(即:停止滑动以避免滑动到空白处)你必须使用一些东西。因为你给我们的结构只有2个div,所以我使用了窗口。如果我们没有关于你的配置的所有信息,你将不会有一个完美的答案!你可以通过更改window.width来自定义答案,由你需要的父级自定义…是的,你是正确的。对不起,我的不好。我不是jquery高手,所以我不知道怎么做这绝对不是jquery的问题,只是html/css。如果你想了解更多信息,请使用所有页面结构(html)、链接到此页面的css等更新你的问题。如果我这样做
var winWidth=$(“#slideshow”)。css('width')是否正确
?这就是问题所在,所有的数学看起来都令人畏惧。我无论如何都不是一个jquery高手。这使得左滑动按钮停止工作!我只能向右滑动。在你的测试中,当你点击左滑动按钮时,它会变成一个空白,即使它在Div的开头。我不确定我是否理解你的意思基本上,你的code做的和我自己的代码完全一样,没有区别。
var offset = $( ".block" ).offset(); 
var leftOffset = offset.left;
var offset = $( ".block" ).offset(); 
var leftOffset = offset.left;

if(leftOffset<580)
    $( ".block" ).animate({ "margin-left": "+=580px" }, "slow" ); 
$( "#right" ).click(function() {
    if( !$(".block").is(':animated') ) {
        var slideStep = 280;
        var marg = $( ".block" ).css('marginLeft').replace('px', '');
        var newMargin = parseInt(marg, 10) - parseInt(slideStep, 10);
        var maxMarg = $( ".block" ).width() + 12;
        var winWidth = $("#slideshow").width();

        if(Math.abs(newMargin) <= maxMarg && (newMargin <= winWidth)) {
            slideStep = Math.min(slideStep, parseInt(maxMarg, 10) - Math.abs(marg) - parseInt(winWidth, 10));
            $( ".block" ).animate({ "margin-left": "-=" + slideStep + "px" }, "slow" );
        }
    }
});

$( "#left" ).click(function(){
    if( !$(".block").is(':animated') ) {
        var slideStep = 280;
        var marg = $( ".block" ).css('marginLeft').replace('px', '');
        var newMargin = parseInt(marg, 10) + parseInt(slideStep, 10);
        var maxMarg = $( ".block" ).width() + 12;
        var winWidth = $("#slideshow").width();

        if(Math.abs(newMargin) <= maxMarg && (newMargin <= winWidth)) {
            slideStep = Math.min(slideStep, Math.abs(marg));
            $( ".block" ).animate({ "margin-left": "+=" + slideStep + "px" }, "slow" );
        }
    }
});