我正在开发一个简单的下拉菜单与jQuery。 当用户按下触发区域时,将切换下拉区域。 我的问题是如何在下拉菜单外单击事件,以便closures下拉菜单?
我刚刚意识到我缺乏关于浏览器正在加载的页面的基本知识。 假设我有这样的结构: <head> <script src="jquery.js" type="text/javascript"></script> <script src="first.js" type="text/javascript"></script> </head> <body> … <script type="text/javascript" id="middle"> // some more JS here… </script> … <script src="last.js" type="text/javascript"></script> </body> 以下是我的问题: 事情发生的顺序是什么? 首先是DOM,然后是JS执行,反之亦然,或者是同时执行(或者只要JS文件完成下载,不考虑DOM)? 我知道脚本是按顺序加载的。 $(document).ready()在哪里适合? 在Firebug的Net选项卡中,我看到DOMContentLoaded事件和load事件。 $(document).ready()在DOMContentLoaded事件触发时触发? 找不到任何具体的信息(大家只是提到“何时加载DOM”)。 “什么时候装载DOM”是什么意思? 所有的HTML / JS已被浏览器下载和parsing? 或者只是HTML? 下面的情况是可能的:有一个$(document).ready()在last.js中调用代码,但在last.js加载之前运行? 它最可能在哪里(在first.js或内联代码块中)? 我怎样才能防止这种情况? 我想要展示什么时候会发生什么,什么取决于什么(如果有的话)的大局。
这些主要是我一直想知道的一些事情,也许有人可以给我更多的洞察力,我会分享我迄今为止注意到的! 我一直想知道的第一件事是…有没有什么区别好或理由使用: $('element').each(function (i, el) { }); – 与 – $.each($('element'), function (i, el) { }); 看着jQuery的文档,我看不出任何一个或其他的原因(也许你知道一个实例或另一个可以做的事情比另一个。 但更重要的是我关心速度 // As opposed to $.each() looping through a jQuery object // — 8x faster for (var i = 0, $('.whatever').length; i < len; i++) { $('.whatever')[i] // do stuff } 如果你在这里查看这个jsFiddle DEMO ,你会发现速度的差异基本上与它们中的任何一个相当,但是更重要的是我觉得应该总是使用for()循环。 我只是unit testing(遍历5个不同场景函数的每一个,5万次),简单地遍历一堆列表项,并设置一个data-newAttr ,没有什么特别的。 问题:我想我最大的问题是,为什么不在迭代通过对象时总是使用循环? […]
我在页面div上: <div id="here_table"></div> 和在jQuery中: for(i=0;i<3;i++){ $('#here_table').append( 'result' + i ); } 这为我生成: <div id="here_table"> result1 result2 result3 etc </div> 我想在表格中收到: <div id="here_table"> <table> <tr><td>result1</td></tr> <tr><td>result2</td></tr> <tr><td>result3</td></tr> </table> </div> 我在做: $('#here_table').append( '<table>' ); for(i=0;i<3;i++){ $('#here_table').append( '<tr><td>' + 'result' + i + '</td></tr>' ); } $('#here_table').append( '</table>' ); 但是这对我产生了: <div id="here_table"> <table> </table> !!!!!!!!!! <tr><td>result1</td></tr> <tr><td>result2</td></tr> <tr><td>result3</td></tr> […]
我如何获得'#container'包括'#container'的HTML,而不仅仅是它里面的东西。 <div id="container"> <div id="one">test 1 </div> <div id="two">test 2 </div> <div id="three">test 3 </div> <div id="four">test 4 </div> </div> 我有这个获得#container中的HTML。 它不包含#container元素本身。 这就是我想要做的 var x = $('#container').html(); $('#save').val(x); 检查http://jsfiddle.net/rzfPP/58/
如果我有以下情况: <div class="apple-monkey"></div> <div class="apple-horse"></div> <div class="cow-apple-brick"></div> 我可以使用下面的select器来查找前两个DIV: $("div[class^='apple-']") 但是,如果我有这个: <div class="some-other-class apple-monkey"></div> <div class="apple-horse"></div> <div class="cow-apple-brick"></div> 它只会find第二个DIV,因为第一个div的类是以string的forms返回的(我想)并不真正以“apple-”开头,而是“some-” 一种方法是不使用开始,而是包含: $("div[class*='apple-']") 这个问题是它也会在我的例子中select第三个DIV。 问题:通过jQuery,在各个类名上使用谓词select器的正确方法是什么,而不是整个类属性作为string? 这只是一个抓CLASS的问题,然后将其分成一个数组,然后用正则expression式循环每个单独的一个? 还是有一个更优雅/不太详细的解决scheme?
我有两个HTML select框。 我需要重置一个select框,当我在另一个select。 <select id="name" > <option value="">select all</option> <option value="1">Text 1</option> <option value="2">Text 2</option> <option value="3">Text 3</option> </select> <select id="name2" > <option value="">select all</option> <option value="1">Text 1</option> <option value="2">Text 2</option> <option value="3">Text 3</option> </select> 当我select第一个select (即id="name" )的选项,我需要重置第二select all ; 同样,当我select第二个select选项(即id="name2" ),我需要重置第一个select all 。 我怎样才能做到这一点?
我正在寻找一个jQuery函数,将提交表单后,将清除窗体的所有字段。 我没有任何HTML代码显示,我需要一些通用的。 你能帮我吗? 谢谢!
可能的重复嵌套元素 我从服务器端Ajax响应(JSON),我试图dynamic创build表行,并将其附加到现有的表(ID: #records_table ); 我试图执行可能重复的解决scheme,但失败了。 我的回复如下所示: "[{ "rank":"9", "content":"Alon", "UID":"5" }, { "rank":"6", "content":"Tala", "UID":"6" }]" 要求的结果是这样的: <tr> <td>9</td> <td>Alon</td> <td>5</td> </tr> <tr> <td>6</td> <td>Tala</td> <td>5</td> </tr> 我想在不parsingJson的情况下做一些事情,所以我试图做到以下几点,这当然是一场灾难: function responseHandler(response) { $(function() { $.each(response, function(i, item) { $('<tr>').html( $('td').text(item.rank), $('td').text(item.content), $('td').text(item.UID) ).appendTo('#records_table'); }); }); } 从我的解决scheme中,我只得到了所有单元格中数字6的一行。 我究竟做错了什么?
我试图禁用鼠标hover在div上的窗口鼠标滚动function – 以便只有div滚动启用 – 当鼠标移离div – 滚动到窗口再次应用。 div绝对定位。 我见过这个post使用jquery禁用鼠标滚轮function,当鼠标光标在一个div内? 但似乎没有提供任何答案 – 因此我的问题。 我假设它会是这样的(如果只有这些方法存在): $('#container').hover(function() { $(window).scroll().disable(); $(this).scroll().enable(); }, function() { $(window).scroll().enable(); });