2 wj1607162253 wj1607162253 于 2016.09.18 16:03 提问

jquery中事件第一次点击无响应,第二次才响应。

jQuery中给a标签加click事件,第一次点击时无响应,但之后就可正常操作。

 <a id='share"+workId+"' class='share' onclick='share()' href='javascript:void(0);' studentId='"+student+"' workId='"+workId+"' good='"+good+"'>点我分享</a>
事件如下所示:
function share() {
    $(".share").click(function () {
        var url =  contextPath+"/teacherWorkController/share.wm";
        var data = {};
        data.studentId=$(this).attr("studentId");
        data.workId=$(this).attr("workId");
        data.good="是";
        var thiselm = $(this);
        $.post(url,data,function (result) {
            if(result.msg == "true"){
                $("#img"+result.id).attr("src",contextPath+"/media/img/teacherwork/happy.jpg");
                thiselm.text("取消分享");
                thiselm.removeClass("share").addClass("cancel");
                thiselm.unbind("click");
                 cancel();                //cancel()函数里边也会调用share()函数
            }else {
                alert("分享失败!");
            }
        },"json");
    });
}

7个回答

kun_tostudy
kun_tostudy   Rxr 2016.09.18 16:10

你把点击时间放在了一个函数里面,你把他放出来试试

wj1607162253
wj1607162253 我之所以特地写一个share()函数是因为我要在cancel()函数里边调用这个函数。这两个函数是互相调用的
大约一年之前 回复
A01014170
A01014170   2016.09.18 16:13

同意楼上,你的share函数的作用就是放一个click事件,就没有存在的比要了。

A01014170
A01014170 回复wj1607162253:那我这样解释,你第一次点击a标签,触发了share方法,加载了click事件,你第二次点击a标签,这时候你要的效果在出现。
大约一年之前 回复
wj1607162253
wj1607162253 class='share' onclick='share()'这是我a标签里的东西,为什么会调用cancel函数之后click事件才会触发呢?
大约一年之前 回复
A01014170
A01014170 回复wj1607162253: 你不要把事件跟函数混在一起了。你可以函数互相调用,但是你现在的写法,必须要cancel函数调用了share函数,你的click事件才会触发,否则的话你的click事件永远都不会出发的,这可能就是你第一次点没用,第二次点有用的原因。
大约一年之前 回复
wj1607162253
wj1607162253 我之所以特地写一个share()函数是因为我要在cancel()函数里边调用这个函数。这两个函数是互相调用的。这样的话怎么处理?
大约一年之前 回复
Marksinoberg
Marksinoberg   Ds   Rxr 2016.09.18 16:13
 window.onload = function(){
     $(".share").click(function () {
            var url = contextPath+"/teacherWorkController/share.wm";
            var data = {};
            data.studentId=$(this).attr("studentId");
            data.workId=$(this).attr("workId");
            data.good="是";
            var thiselm = $(this);
            $.post(url,data,function (result) {
            if(result.msg == "true"){
            $("#img"+result.id).attr("src",contextPath+"/media/img/teacherwork/happy.jpg");
            thiselm.text("取消分享");
            thiselm.removeClass("share").addClass("cancel");
            thiselm.unbind("click");
            cancel();
            }else {
            alert("分享失败!");
            }
            },"json");
            });

 }
guwei4037
guwei4037   Ds   Rxr 2016.09.18 16:20

jquery中这么用:

$(function(){
$(".share").click(function(){
//...
});
})

wj1607162253
wj1607162253   2016.09.18 16:28

补充补充~~~~~我之所以写成
function share() {
$(".share").click(function () {
cancel(); //cancel()函数里边也会调用share()函数
}
function cancel() {
$(".cancel").click(function () {
share(); //cancel()函数里边也会调用share()函数
}
这两个函数是要互相调用的,另:share()和cancel()我在$(function()){
}里都提前定义过得

A01014170
A01014170   2016.09.18 16:35

你试试这样

 var share=function(){

};
var cancle=function(){

};
$(".cancle").on("click",share);
$("share").on("click",cancle);
wj1607162253
wj1607162253 刚试过了,还是第一次无响应
大约一年之前 回复
u012387244
u012387244   2017.10.23 10:28

function share() {
$(".share").unbind("click").click(function () {

}
}

Csdn user default icon
上传中...
上传图片
插入图片