jQuery width函数参数不起作用

时间:2018-10-30 13:21:36

标签: javascript jquery html css

我正在使用从 stackoverflow 中的帖子中找到的代码来水平滚动分区。我可以将div滚动为全宽,但是不能滚动特定的宽度。

$("div").on("click", function(event) {
  event.preventDefault();
  $("html, body").animate({
    scrollLeft: $(document).width()
  }, "slow");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>    
 
<div>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</div>

以上代码有效!

jQuery文档说width()函数可以获取值作为参数,但是当我尝试如下操作时,滚动无法正常工作。

$("div").on("click", function(event) {
  event.preventDefault();
  $("html, body").animate({
    scrollLeft: $(document).width(50)
  }, "slow");
});

我该如何解决?

4 个答案:

答案 0 :(得分:0)

您在这里找到解决方法

文档:https://api.jquery.com/scrollleft/

$("div").on("click", function(event) {
  event.preventDefault();
  $("html, body").animate({
    scrollLeft: "50px"
  }, "slow");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</div>

希望这会对您有所帮助。

答案 1 :(得分:0)

这是因为构造$(document).width(50)无效,您只能使用常规数字或计算结果。例如,这些结果有效:

$(document).width()
50
$(document).width() - 50

这里是一个例子:

$("div").on("click", function(event) {
  event.preventDefault();
  $("html, body").animate({
    scrollLeft: $(document).width() - 1000
  }, "slow");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
</div>

答案 2 :(得分:0)

原因

为什么scrollLeft: $(document).width(50)不能工作,因为$(document).width(50)没有返回有效数字,这是原因。 (因为它是setter方法。)

修复

  

.scrollLeft(value)是预期的类型:Number(一个整数,指示要将滚动条设置到的新位置。)

$("div").on("click", function(event) {
    event.preventDefault();
    var ScrollValue = $(document).width() - 100;
    $("html, body").animate({
        scrollLeft: ScrollValue
    }, "slow");
});

ScrollValue可以根据您的要求进行计算,并作为整数值传递。

希望这可以解决您的问题,有关更多信息,请参见:https://api.jquery.com/scrollleft/

答案 3 :(得分:0)

<script src="//unpkg.com/angular/angular.js"></script> <body ng-app="plunker" ng-controller="MainCtrl"> <p>Hello {{name}}!</p> <table class="table table-striped table-bordered"> <thead> <tr> <th>Name</th> <th>Status</th> <th>Cost</th> <th>Items</th> <th>Card</th> <th>Cost</th> </tr> </thead> <tbody> <tr class="trigger" ng-repeat-start="car in carList | filter:tableFilter" ng-click="main.activeRow = !main.activeRow"> <td><a href="#">+</a><span style="padding:4px;">{{car.name}}</span></td> <td>{{car.review}}</td> <td>{{car.rating}}</td> <td>{{car.fiveStarPercent}}</td> <td>{{car.recommended}}</td> <td>{{car.price}}</td> </tr> <tr ng-repeat-end ng-show="main.activeRow" ng-repeat="subling in car.descrt"> <td>{{subling.name}}</td> <td>{{subling.rating}}</td> <td>{{subling.review}}</td> <td>{{subling.description}}</td> <td>{{subling.card}}</td> <td>{{subling.gift}}</td> </tr> </tbody> </table> </body>函数提供窗口宽度。这意味着$(document).width()等于一个值。然后,您必须用值替换$(document).width()。就是这样。

$(document).width()