Tag: dom

获取组件的实际宽度和高度

我们在JavaScript中遇到了一个相当可怕的问题,我们似乎都没有能力解决: 我们如何获得DOM元素的宽度和高度,包括子元素,整个盒子模型等,而不会在页面上显示组件? 记住:我正在寻找建议。 即使没有完全回答问题(或者不完全符合指定参数)的答案也可能,而且可能会有所帮助。 主要目标:我通过Javascript将HTML元素添加到页面中 – 来自数据库的大小和样式的HTML元素。 问题是他们行为不端,通常是不好的对齐,由于填充/边距不同,一个元素比另一个元素大,所以我需要检查它们的实际大小来解决这些问题。 由此产生的应用程序将成为一个,正如BigMacAttack在评论中所描述的那样,“紧密结合的第三方HTML控件拼接”几乎可以在现场进行。 它需要看起来像完全成熟的桌面应用程序,HTML似乎充满激情地讨厌这个想法。 不是我责备它。 无论如何,这是一些示例代码: JavaScript的: function exampleElement(caption, content) { this.caption = caption; this.content = content; this.rootElement = document.createElement(“div”); } exampleElement.prototype.constructElement = function() { var otherElement = document.createElement(“p”); this.rootElement.className = “exampleElement”; this.rootElement.textContent = this.caption; otherElement.className = “exampleP”; otherElement.textContent = this.content; this.rootElement.appendChild(otherElement); /*I need to know size of the […]

jQuery中$ .cache的目的是什么?

我看到通过.on()注册的事件处理程序保存在$.cache 。 我还看到事件处理程序也保存在$(elem).data() 。 $.cache保存的对象指的是注册事件的DOM节点。 当DOM节点分离时,这会导致内存泄漏,这会使.off()调用成为必需的。 我有一种情况,我不知道DOM节点(我附加事件处理程序)何时被分离。 虽然我可以在我的代码中保存对该DOM节点的引用并调用.off()进行清理,但这似乎不太好,因为知道何时删除DOM节点并不简单。 做这个的最好方式是什么?

通过ajax加载JavaScript的好习惯方法

免责声明:我对AJAX很新! 我环顾四周,我不确定使用ajax加载javascript的方法。 我正在使用ajax来请求每个都需要自己的6-10个简短方法的页面。 总共可能有5-6个这样的页面,所以大约总共35个以上的方法。 我更愿意访问需要加载的每个页面所需的javascript。 我见过几种方法,我不确定哪种方法最符合我的需要: 在头部包含一个空脚本元素,并通过操作src属性。 DOM。 通过创建一个新的脚本元素。 DOM并将其附加到document.body(这听起来与#1相同)。 jQuery(我已经在使用)有一个ajax getScript()方法。 我还没有读过任何关于它的内容,但是我可以将脚本元素作为ajax响应的一部分吗? 由于我是ajax和web开发的新手,我很好奇每种方法的起伏,以及我错过的任何方法。 一些问题是: – 是否将使用缓存副本,或者每次发出ajax请求时脚本都会下载。 请注意,脚本将是静态的。 – 浏览器兼容性。 我使用Chrome,但此应用程序将用于IE> = 7以及Firefox的各个版本。

是否有IE渲染完成事件?

在尝试确定页面加载20秒的原因时,我在IE8中发现了一些奇怪的行为。 情况是这样的。 我做了一个ajax调用,它返回并且回调看起来像这样 $(“#StoreDetailsContainer”).html($(tableHtml)); var StoreDetailsTable = $(“#StoreDetailsTable”); StoreDetailsTable.tablesorter({ sortList: [[0, 0]], cssChildRow: “SubTable” }); StoreDetailsTable.filtertable({ cssChildRow: “SubTable” }); 但是,这段代码需要20秒才能完成。 我正在乱搞,计时,并在方法之间弹出警报,突然间,它只需要6秒。 我玩了一下,发现如果我在.html()调用之后引入延迟,并且在我尝试操作DOM之前,页面渲染速度要快得多。 它现在看起来像这样 $(“#StoreDetailsContainer”).html($(tableHtml)); window.setTimeout(function() { var StoreDetailsTable = $(“#StoreDetailsTable”); StoreDetailsTable.tablesorter({ sortList: [[0, 0]], cssChildRow: “SubTable” }); StoreDetailsTable.filtertable({ cssChildRow: “SubTable” }); }, 100); 尽管在该过程中添加了额外的1/10秒,它也只需要6秒。 我的理论是,因为在尝试使用它之前,IE没有通过.html()调用完全呈现给屏幕,所以会发生某种锁定。 有没有办法确定IE何时完成渲染由.html()添加到DOM的内容,所以我不需要在setTimeout调用中使用任意值?

jQuery模态窗口从我的表单中删除元素

jQuery,当我用它创建一个包含表单元素的模态窗口时,它会在我提交表单时取出这些元素。 表格的例子: Title: Url: Photo title: Photo thumb: Include lighbox? Photo: JS的摘要: $(document).ready(function(){ $(“#add_photo”).dialog({ autoOpen: false, buttons: { “Ok”: function() { $(this).dialog(“close”); } } }); }); 所以我在检查期间通过firebug进行的操作是,jquery实际上删除了我在#add_photo中的表单元素并将它们放在DOM中的表单之外,所以即使在html中,modal dialog也在我的表单中,在DOM中它不是。 … 这就是我遇到这个问题的原因! 有没有人遇到过simmilar问题? 任何解决方案?! 非常感谢你!

如何将div动态定位在另一个下方?

我正在尝试使用jQuery来检测div( #olddiv )的位置,所以我可以使用该位置在其下方放置另一个div( #newdiv )。 2个div的右边界对齐(右边框)。 我正在尝试将#olddiv底部和右侧位置用作#newdiv顶部和右侧边框。 我已经使用过这段代码了,但它没有用。 知道我做错了什么吗? var right = $(‘#olddiv’).position().right; var top = $(‘#olddiv’).position().bottom; $(‘#newdiv’).css(‘top’, right); $(‘#newdiv’).css(‘right’, top); 另外,我不确定我的position是否合适。 我认为这可以通过position或offset ,但我不确定: $(‘#ID’).position().left $(‘#ID’).offset().left 谢谢

JQuery:当元素在视图中时触发动作

在我网站的页脚中,我使用counUp.js(链接: http ://inorganik.github.io/countUp.js/)来计算三个数字。 我在网站底部添加了此代码: var c1 = new countUp(“upnum1”, 1, 27, 0, 4); var c2 = new countUp(“upnum2”, 1, 10, 0, 4); var c3 = new countUp(“upnum3”, 1, 27, 0, 4); var c4 = new countUp(“upnum4”, 1, 1000, 0, 4); window.onload = function() { c1.start(); c2.start(); c3.start(); c4.start(); } 这很好用,但当然加载页面后开始计数。 如果数字的包含div是“在视图中”而不是在加载页面时,如何设置触发此效果? 尝试了几个jQuery的东西,但找不到工作的解决方案……谢谢!

如何观察’a’标签的内容 – jquery

我有一个空白的标签,内容通过外部javascript加载。 我想观察以及当其内容更改执行另一项任务时。 内容只会改变一次。 可以这样做吗? 我也在使用jQuery。 提前致谢

jQuery中提供了哪些钩子?

官方只有$.cssHooks记录在jQuery API文档中 ,并且$.valHooks在一个句子中被提及,用于解决.val()的已知问题。 我想知道除了这两个之外,jQuery中有多少个钩子,我们应该在插件开发中使用$.valHooks吗? 如果是这样,我认为它应该被记录为专门的主题而不是仅仅一句话。

禁用水平滚动; 但允许垂直滚动

我正在尝试禁用网站上的水平滚动; 但允许垂直滚动。 我有一个脚本,通过滑动页面的“主体”并显示更多内容,就像一个滑块。 但是,这会在右侧创建额外的空白区域。 我需要禁用水平滚动,以便用户看不到这个空白区域。 我尝试了以下脚本但它禁用了水平和垂直滚动: window.onscroll = function () { window.scrollTo(0,0); } 我已经尝试过overflow-x: hidden但是当body的宽度是动态的而不是静态时,它不起作用。 题: 有没有办法修改上面的脚本来禁用水平滚动并保持垂直滚动?