我有以下代码,它是用 DOM API 而不是 jquery 编写的。我不知道为什么。它位于用于 jquery 表单验证的提交函数内。我需要更改“parentNode”部分,以便“最接近”而不是“parent”。我不擅长 JavaScript。我尝试将其转换为 jquery,但无法使其工作。基本上,如果这是 jquery,我需要将 .parent() 更改为 .closest()。
var summary = "";
$.each(element, function() {
summary += "<li>" + this.element.parentNode.getElementsByTagName('label')[0].innerHTML.replace("\<span\>*\<\/span\>","") + "</li>";
});
summary = summary.replace(/\<li\>.+\<\/li\>\1/, "$1");
alert(summary);
这可以用javascript来做吗?或者,有没有一种简单的方法可以将其转换为jquery?
UPDATE:这是一个小提琴,可以帮助解释我想要完成的任务。基本上,因为我在其中一个输入周围添加了“span”标签,所以“p”标签不再是父标签。因此,parentNode 不再找到“p”标签。
http://jsfiddle.net/9um8xt79/1/
更新 2——之前的小提琴链接不正确。上面的链接是正确的。
我该如何修改才能找到<p>
无论是直系父母还是祖父母?
来自未来的你好(2019)!现在,这可以通过现代浏览器(即不是 Internet Explorer)中的本机 DOM API 直接实现:Element.closest
所以你可以更换jQuery(selector).closest
with document.querySelector(selector).closest
.
同样,你应该能够消除其他jQuery
代码中的函数,例如.children()
通过使用native .children and .addClass()
通过使用.classList.add().
See also
- YouMightNotNeedJquery.com
-
“JQuery 方法的本机等效项 - 第 1 部分:选择 DOM 元素”(其他部分的链接位于此 codepen 的底部)
- “jQuery 方法的本机 JavaScript 等效项:DOM 和表单”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)