如果没有jQuery,这段代码的并行性是什么
What is the parallel of this code without jQuery?
我需要用纯JavaScript重写这段代码,即不使用jQuery。它获取div
的内容,并将其添加到另一个div
中的第一个图像之后。
$(document).ready(function() {
var teksti = $('#inside1').html();
$('<div id="inside1">' + teksti + '</div><div style="clear:both;"></div>').insertAfter("#artikull > p > img:first");
});
如果你只需要支持现代浏览器,它并不太复杂:
// $(document).ready(function() {
document.addEventListener("DOMContentLoaded", function() {
// var teksti = $('#inside1').html();
var teksti = document.getElementById('inside1').innerHTML;
// $('<div id="inside1">' + teksti + '</div><div style="clear:both;"></div>')
// .insertAfter("#artikull > p > img:first");
document
.querySelector('#artikull > p > img')
.insertAdjacentHTML(
'afterend',
'<div id="inside1">' + teksti + '</div><div style="clear:both">'
);
// });
});
原始jQuery中大致相同的行在注释中。
不过我有点困惑;您提供的代码将创建一个与原始元素具有相同ID的元素,并最终在p
中包含几个div
,从而产生一个有点变形的DOM。你不是更喜欢简单地包装现有元素并移动它,而不是创建一个内容完全相同的新元素吗?你不应该把它移动到接受块级子元素的地方吗?
function adddiv(){
var teksti = document.getElementById('inside1').innerHTML;
var div = document.getElementById('artikull');
var imazh = div.getElementsByTagName("img")[0];
imazh.outerHTML = imazh.outerHTML + teksti;
}
下面的代码应该在现代浏览器和IE版本9中兼容。
document.addEventListener("DOMContentLoaded", function (e) {
var insideHTML = '<div id="inside1">' + window.document.getElementById('inside1').innerHTML + '</div><div style="clear:both;"></div>',
artikullElement = window.document.getElementById('artikull'),
pElements = (function (nodes) {
var results = [],
node;
for (var i = 0, iLen = nodes.length; i < iLen; i++) {
node = nodes[i];
// Get all children P tags
if (node.nodeValue === 1 && node.tagName === "P")
results.push(node);
}
return results;
})(artikullElement.childNodes),
imgElement = (function (nodes) {
var node;
for (var i = 0, iLen = nodes.length; i < iLen; i++) {
// Get the first child tag image found in any of the P tags
if (node.nodeValue === 1 && node.tagName === "IMG")
return node;
}
})(pElements);
if (imgElement) {
if (imgElement.insertAdjacentHTML)
imgElement.insertAdjacentHTML('beforeEnd', insideHTML);
else {
var range = window.document.createRange(),
docFragment = range.createContextualFragment(insideHTML);
imgElement.parentNode.insertBefore(docFragment, imgElement.nextSibling);
}
}
});
相关文章:
- 使用 jQuery 检查文本可见性 .包含代码的行为不符合预期
- 如何在客户端Collection增长时立即反应性地执行代码
- 在单元测试中实现逻辑,以缩短语法并提高测试代码的可重用性
- 如果没有jQuery,这段代码的并行性是什么
- 代码在 Meteor 和 AngularJS 之间的可转移性如何
- 为什么 Javascript 函数调用在从代码隐藏更改可见性后不起作用
- GWT 客户端代码中的易失性变量
- Dojo 使用 domConstruct 将声明性代码添加到现有手风琴中
- 关于 Web 工作线程并行性
- 与柏拉图一起进行JavaScript代码可维护性评级
- ReactJS/ES6:两个代码块之间的等价性
- 在gridview事件处理程序中切换DIV可见性的代码不工作
- 如何使用PHP保存和维护javascript文件的本地副本(考虑并行性)
- 在哪里添加可见性:在openlayers代码中为false
- 如何在项目中组织JavaScript代码以提高可维护性
- 两个窗口的Javascript代码可用性.加载和文档.准备好了
- Typescript/ES7中async/await的有限并行性
- 如何使用YUI asyncRequests追溯性地向代码库添加活动AJAX请求检测
- 我怎么能得到一个按钮在闪亮调用JavaScript和R代码并行
- 并行运行异步代码