如何对动态创建的元素使用 JavaScript click() 方法(不是 jQuery)?
我用VanillaJS 重写了它。我敢肯定,这不是重写它的唯一方法。
(function () {
var inputs = document.getElementsByTagName('input'),
fn = function () {
var html = this.parentNode.innerHTML.replace(
'Browse and select file',
'Add one more file'
),
d = document.createElement('div'),
df = document.createDocumentFragment();
html = '<fieldset>' + html + '</fieldset>';
d.innerHTML = html;
while (d.childNodes.length)
df.appendChild(d.childNodes[0]);
if (this.parentNode.parentNode.nextSibling) // <form> is 3 parents up
this.parentNode.parentNode.parentNode.insertBefore(
df,
this.parentNode.parentNode.nextSibling
);
else
this.parentNode.parentNode.parentNode.appendChild(df);
},
i = inputs.length;
while (i--) {
if (inputs[i].getAttribute('type').toLowerCase() === 'file')
inputs[i].addEventListener('change', fn);
}
}());