<label class="file">File</label>
<input class="none" type="file">
jQuery:
$('.file').click(function(){ $('.none').click();});
<label class="file">File</label>
<input class="none" type="file">
jQuery:
$('.file').click(function(){ $('.none').click();});
var _file = document.getElementsByClassName('file')[0]; //Return a NodeList
_file.onclick = function(){
document.getElementsByClassName('none')[0].click();
}
编辑
如果有多个具有相同类的元素
var _file = document.getElementsByClassName('file'); //Return a NodeList
var _none = document.getElementsByClassName('none');
for(var x = 0;x<_file.length;x++){
(function(x){ //Creating closure
_file[x].addEventListener('click',function(){
console.log(x)
document.getElementsByClassName('none')[x].click();
})
}(x))
}
file
和none
的元素会怎样? - Tushar$('.none').click();
和 .trigger('click')
是一样的,都会在所有元素上触发事件。演示fiddle,所以您应该在所有 document.getElementsByClassName('none')
上调用 .click()
(嵌套循环)。 - Bogdan KuštangetElementsByClassName
返回的是 HTMLCollection
,而不是 NodeList
(在访问和性能方面有很大的区别)。 - Alosodocument.querySelector(".file")
.addEventListener("click", function(){
document.querySelector(".none").click();
});
对于.click()
的更跨浏览器替代方案:如何触发JavaScript事件点击