Maison  >  Questions et réponses  >  le corps du texte

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

PHP中文网PHP中文网2750 Il y a quelques jours1170

répondre à tous(16)je répondrai

  • 迷茫

    迷茫2017-04-10 18:08:04

    用户有行为触发才可以。

    répondre
    0
  • 阿神

    阿神2017-04-10 18:08:04

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

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-10 18:08:04

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

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

    <script>
    function click()
    {

    alert("123");  

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

    répondre
    0
  • 阿神

    阿神2017-04-10 18:08:04

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

    répondre
    0
  • 迷茫

    迷茫2017-04-10 18:08:04

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

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-10 18:08:04

    实际上你并没有触发'.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里面的变量,两者不冲突

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-10 18:08:04

    <!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事件,你没有完整的上下文,所以我也直接给出了代码,如果有问题可以继续讨论

    répondre
    0
  • PHPz

    PHPz2017-04-10 18:08:04

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

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-10 18:08:04

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

    répondre
    0
  • 阿神

    阿神2017-04-10 18:08:04

    你触发click事件了吗?

    répondre
    0
  • Annulerrépondre