将jquery(.each,.find,.next)转换为javascript

我参与将jquery代码转换为java脚本以满足需求。

例1:

在父html div中有一些类名为“child_elems”的子元素,其id为“parent_elem”。 我需要动态更改子元素的宽度。 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也很新,并且会感谢任何建议。

如果必须,你绝对可以这样做,jQuery只是一个位于javascript之上的层。 当你编写jQuery时,你正在编写javascript。

如果你真的需要沿着这条路走下去,那么查看jQuery源可能会有所帮助。 James Padolsey为检查jQuery提供的各种方法提供了一个非常有用的工具。 你可以在这里看到这个工具: http : //james.padolsey.com/jquery/#v=git&fn=jQuery.fn.next 。

请记住,jQuery团队花了数年时间让他们的代码高效地工作并用于多个浏览器。 如果您的代码在浏览器中出现故障,请不要感到惊讶。

您可以在下面使用您的工作,但要注意它们可能不适用于所有浏览器。 如果可能的话,使用jQuery总是安全的。

 // jQuery -> JavaScript .each -> array.forEach(callback[, thisArg]) .find -> document.querySelector(selectors), document.querySelectorAll(selectors); 

您可以开始在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