javascript - 为什么 jquery 代码在我的元素中不起作用

标签 javascript jquery html css

我的代码有问题,想测量我的 ul 的总宽度并检查它是否小于窗口宽度它不显示溢出:滚动,如果它大于窗口宽度则隐藏li(s) 下的卷轴。
每个li有120px的宽度,它的边距是:0 2px;这就是为什么我使用 120 和 4 来总结 .ulcontainmatrix 的总宽度

我的问题是:当我在浏览器控制台中使用它并推送运行代码时,代码可以正常工作,但在窗口加载时在我的代码中不起作用!!

我的 CSS

.flighmatrixmain{
    overflow-x:scroll; 
    margin-bottom:20px;
} 

我的 HTML

<div class="flighmatrixmain"> 
   <ul class="ulcontainmatrix"> 
     <li>1</li>
     <li>2</li>
     <li>3</li>
     <li>4</li>
     <li>5</li>
      ...
    </ul>
</div>

我的JS

var ULwidth = $(".flighmatrixmain ul li").length * 120 + $(".flighmatrixmain ul li)").length * 4;
$(".flighmatrixmain .ulcontainmatrix").width(ULwidth);

if ($(".flighmatrixmain ul li:not(ul.lines li)").length * 120 < $('.flighmatrixmain').width()) {
    $('.flighmatrixmain').css('overflow', 'hidden');
}

最佳答案

您可能希望将 jQuery 代码包装在“就绪”事件中。

这样做将确保其中的 javascript 代码仅在您的文档加载后执行(因此文档中可能存在您的 javascript 代码中可能涉及的所有元素)

$(document).ready(function(){

    // your code

});

请参阅:https://jsfiddle.net/u9k2c72h

另一种方法是将您的 javascript 移动到 body 标签的底部,但不推荐这样做(附带说明:如果可能,最好将 javascript 文件加载到文档底部)。

关于为什么会发生的简短解释

在某些情况下,您的 javascript 代码可能会在 HTML 中的某些元素添加并可供使用(文档呈现过程)之前执行,因此如果您有一些 jQuery 代码打算使用或操作一个元素尚不可用 - 您的代码将无法运行(通常不会发出任何错误并让您想知道“为什么它不起作用?”)

所以最简单的方法是在文档中插入元素的位置之后插入 javascript(通常在文档的末尾,就在 </body> 标记之前,所以理论上元素被添加在浏览器开始读取 javascript 并执行它。

更好的方法是使用 $(document).ready(function(){ });并将任何可靠的 javascript 代码(以及任何其他文档加载的相关代码)包装在其中,这更可靠,并且还为您提供了能够将 javascript 定位在 HTML 中的不同位置并保持相同效果的优势。

如果你不喜欢 jQuery,你可以使用 vanilla javascript 来实现,比如:

document.addEventListener( "DOMContentLoaded", function(){

    // code code

}, false );

(请记住,DOMContentLoaded 比 jQuery 的就绪事件更严格一些,因为 DOMContentLoaded 实际上会等待页面中的所有内容加载 - 包括样式、脚本等。)

希望能帮到你

关于javascript - 为什么 jquery 代码在我的元素中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39544429/

相关文章:

jquery - 向所有必需元素添加边框,但顶部滚动到第一个空元素

Java JLabel,为什么 "<html>/* test */</html>"导致JLabel为空?

javascript - 使用 HTML 表单提前输入 - 根据选择自动填充下一个单元格

php - 为什么 mySQL 表无法正确导出为 HTML 表

javascript - Accordion 和标签之间的区别

javascript - Socket.io 传递回调函数

javascript - 如何在 React 中获取文本框的值?

javascript - 如何在 JavaScript 中获取点击的 div 元素的 ID?

javascript - 仅在 Safari 中发生的 XHR 请求的 DOM 异常 11

javascript - 用户突出显示文本时 jQuery 的 'click' 函数?