我参与了将jquery代码转换为java脚本的工作。
示例1:
在id为"parent_elem“的父html div中有几个类名称为"child_elems”的子元素。我需要动态更改子元素的宽度。jquery代码将如下所示:
$(#parent_elem).find(.child_elems).each(function(){
$(this).css("width","50px");
});示例javascript:
var parentelem = document.getElementById("parent_elem");
var childelems = parentelem.getElementsByClassName("child_elems");
for(var i=0;i<childelems.length;i++)
childelems[i].style.width = "50px";这是可行的,但我不确定这是否是一种有效的方法。
我们可以在不使用for循环的情况下完成相同的任务吗?在javascript中有没有与.each,.next,.find等同的东西?
我对javascript和jquery也很陌生,如果有任何建议,我将不胜感激。
发布于 2013-07-01 19:56:17
如果你必须这样做,你绝对可以这样做,jQuery只是位于javascript之上的一层。当你写jQuery的时候,你就是在写javascript。
如果你真的需要沿着这条路走下去,看看jQuery源代码可能会有所帮助。James Padolsey提供了一个非常有用的工具来检查jQuery提供的各种方法。你可以在这里看到这个工具:http://james.padolsey.com/jquery/#v=git&fn=jQuery.fn.next。
请记住,jQuery团队已经花了多年的时间让他们的代码高效地在多个浏览器上工作。如果您的代码跨浏览器失败,请不要感到惊讶。
发布于 2013-07-01 20:00:13
您可以使用下面的代码来完成您的工作,但请注意,它们可能并不适用于所有浏览器。如果可能的话,使用jQuery总是安全的。
// jQuery -> JavaScript
.each -> array.forEach(callback[, thisArg])
.find -> document.querySelector(selectors), document.querySelectorAll(selectors);发布于 2013-07-01 19:59:17
您可以在github上开始查看这些函数代码。.find = https://github.com/jquery/jquery/blob/master/src/traversing.js#L13 .each = https://github.com/jquery/jquery/blob/master/src/core.js#L541
https://stackoverflow.com/questions/17403844
复制相似问题