首页 > 关于ajax请求返回值后,调用click事件不执行

关于ajax请求返回值后,调用click事件不执行

我的代码如下:

<!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没有弹出选择框?


jsonp返回的格式是什么样的,callback() ? 跨域请求返回的是方法名,不执行success的


用户有行为触发才可以。


试了下去掉ajax后在chrome可以调用input,firefox不行,应该是firefox下span的点击被button的点击覆盖了


那个方法名称用click确实会存在问题,举个例子
<html>
<body>

<button onClick="click()">hit me</button>

<script>
function click()
{

alert("123");  

}
</script>
</body>
</html>
你会发现点击没效果。至于你那个问题的话,先看看ajax能请求成功吗


jsonp成功后调用callback,你看看你的callback是啥function吧


<!DOCTYPE html>
<html>
<head>
    <title>this is a test</title>
    <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
</head>
<body>
<input type="file" id="testId"/>
<button id="btn"><span class="test">click me</span></button>
<script>
    function click(){
        $('#testId').click();
    }
    $(function(){
        $('.test').on('click', function(){
            $.ajax({
                url : '/public/index.php?s=index/index/hello',
                method  : 'GET',
                dataType : 'json',
                async: false,
                success : function(data){
                    click();
                }
            });

        });
    });
</script>
</body>
</html>

不知道你出于什么用意,要通过body去绑定click事件,你没有完整的上下文,所以我也直接给出了代码,如果有问题可以继续讨论


你需要这样写 $(this).click();


$('#testId').trigger("click");


1.确认接口是否正确的返回。
2.用trigger代理click事件。


因为input type=file,使用代码触发click事件是无效的,需要用户真实地点击才能生效


应该没有sucess


至少有一点可以肯定的是你的方法命名不能用click


没有触发事件,可以模拟触发事件:$('#testId').trigger("click");
另外,建议写方法名写的有意义好理解一点,不要和原生或者库的方法重名。


function click()中"click"是一个保留字,你试试使用其他的方法名


实际上你并没有触发'.test',每次点击的实际上是'#btn'按钮,
两个方法:
1、监听'.test'改成监听'#btn':

$('body').on('click', '#btn', function(e){...});

2、更改dom,将<button id="btn"><span class="test">click me</span></button>改为:

 <span class="test">click me</span>

根据button标签的定义,button标签里面包含的是button的内容,所以button里面不应该包含其他dom节点,题主这是乱写嵌套,显然浏览器不会处理button里面的节点,只当做是内容来处理,所以你给button里面的内容添加事件监听是永远无法触发的。
另外,方法名是可以用click的,毕竟题主的click方法是全局的,而jQuery的click方法是jQuery里面的变量,两者不冲突


你触发click事件了吗?

【热门文章】
【热门文章】