我的代码如下:
<!DOCTYPE html>
<html>
<head>
<title>this is a test</title>
<script src="jquery-1.12.1.min.js"></script>
</head>
<body>
<input type="file" id="testId"/>
<button id="btn" class="test">click me</button>
<script>
function click(){
$('#testId').click();
}
$(document).ready(function(){
$('body').on('click', '.test', function(e){
$.ajax({
url : 'XXXXXXXX',
method : 'GET',
dataType : 'jsonp',
success : function(){
click();
}
});
});
});
</script>
</body>
</html>
请问各们大神,为什么$('#testId').click()并未起作用,input file没有弹出选择框?
用户有行为触发才可以。
$('#testId').trigger("click");
那个方法名称用click确实会存在问题,举个例子
<html>
<body>
<button onClick="click()">hit me</button>
<script>
function click()
{
}
</script>
</body>
</html>
你会发现点击没效果。至于你那个问题的话,先看看ajax能请求成功吗
你需要这样写 $(this).click();
jsonp返回的格式是什么样的,callback() ? 跨域请求返回的是方法名,不执行success的
实际上你并没有触发'.test',每次点击的实际上是'#btn'按钮,
两个方法:
1、监听'.test'改成监听'#btn':
2、更改dom,将<button id="btn"><span class="test">click me</span></button>改为:
根据button标签的定义,button标签里面包含的是button的内容,所以button里面不应该包含其他dom节点,题主这是乱写嵌套,显然浏览器不会处理button里面的节点,只当做是内容来处理,所以你给button里面的内容添加事件监听是永远无法触发的。
另外,方法名是可以用click的,毕竟题主的click方法是全局的,而jQuery的click方法是jQuery里面的变量,两者不冲突
不知道你出于什么用意,要通过body去绑定click事件,你没有完整的上下文,所以我也直接给出了代码,如果有问题可以继续讨论
jsonp成功后调用callback,你看看你的callback是啥function吧
function click()中"click"是一个保留字,你试试使用其他的方法名
你触发click事件了吗?