javascript - 关于ajax请求返回值后,调用click事件不执行
PHP中文网
PHP中文网 2017-04-10 18:06:04
0
16
1146

我的代码如下:

<!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中文网

认证高级PHP讲师

모든 응답(16)
迷茫

用户有行为触发才可以。

阿神

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

Ty80

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

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

<script>
function click()
{

alert("123");  

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

阿神

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

迷茫

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

洪涛

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

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

PHPzhong

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

左手右手慢动作

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

阿神

你触发click事件了吗?

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!