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()函数里边调用这个函数。这两个函数是互相调用的
接近 2 年之前 回复
A01014170
A01014170   2016.09.18 16:13

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

A01014170
A01014170 回复wj1607162253:那我这样解释,你第一次点击a标签,触发了share方法,加载了click事件,你第二次点击a标签,这时候你要的效果在出现。
接近 2 年之前 回复
wj1607162253
wj1607162253 class='share' onclick='share()'这是我a标签里的东西,为什么会调用cancel函数之后click事件才会触发呢?
接近 2 年之前 回复
A01014170
A01014170 回复wj1607162253: 你不要把事件跟函数混在一起了。你可以函数互相调用,但是你现在的写法,必须要cancel函数调用了share函数,你的click事件才会触发,否则的话你的click事件永远都不会出发的,这可能就是你第一次点没用,第二次点有用的原因。
接近 2 年之前 回复
wj1607162253
wj1607162253 我之所以特地写一个share()函数是因为我要在cancel()函数里边调用这个函数。这两个函数是互相调用的。这样的话怎么处理?
接近 2 年之前 回复
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 刚试过了,还是第一次无响应
接近 2 年之前 回复
u012387244
u012387244   2017.10.23 10:28

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

}
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
jquery使用live绑定toggle事件,第一次点击没有反应,第2次才起作用问题
$("#popChapterManage .JS-edit").live("click",function(){ $(this).toggle(function () { $(this).text("保存"); var input = $(this).parent().siblings(".input"); va
android点击事件,第一次无效,第二次才响应的问题
今天碰到的问题,android的标题栏一个回退button,每次进入的时候第一次点击无效,一直到第二次点击时才响应,然后把代码copy到系统的回退按钮里面,结果每次都能响应,后面想了想,应该跟焦点有关系 第一次点击的时候相当于获取焦点,第二次点击的时候才响应点击事件,在button的属性里面加了两个焦点相关的属性: android:focusable="true" android:f
点击事件第一次没反应,第二次才实现的问题
之前为了让EditText在页面显示的时候,自动失去焦点,所以在其依赖的布局中添加了android:focusable="true" android:focusableInTouchMode="true"这两句话,这样EditText就自动失去焦点,只有点击之后才会获得焦点。但是同样的,因为android:focusableInTouchMode=”true”这句是,意思是是否触摸才能获得焦点,设置
用jquery 绑定一个按钮click事件后,第一次点击后,一切正常,第二次点击,竟然执行两次,以后越来越多
用jquery  绑定一个按钮click事件后,第一次点击后,一切正常,第二次点击,竟然执行两次,以后越来越多。 后来查看文档发现  jquery click  不是 替换原有的function  而是接着添加,所以才会执行次数越来越多。 这有就可以在添加之前要先解除click事件绑定,然后再重新绑定。  重新绑定部分代码: [javascript] view plaincop
MFC中点击ListControl时,第一次点击不响应NM_CLICK消息,第二次才响应的问题
这个问题困扰了我三天,先描述一下问题所在。 我创建了一个ListControl,并将这个控件放在了一个对话框上面。具体的创建代码如下: m_meshlistctrl.Create(WS_CHILD|WS_BORDER|LVS_REPORT|LVS_SINGLESELC,Rect(1,1,300,400), this, IDC_LIST1);    //   IDC_LIST1是我绑定的Lis
关于Button点击两次才响应事件相关问题
本文来自http://www.cnblogs.com/xiaoweiz/p/3833079.html       首先我们来看看touch mode的定义。它是用户和手机进行交互时view层次结构的一个状态。它本身是很容易理解的, 代表了最近一次的交互是否是通过触摸屏发生的,因为在Android设备上还存在别的交互方式,比如D-pad、滚动球等等。   为什么Android会引入
Android EditText点击两次才能响应,解决办法
在编写程序的过程中,发现EditText setOnClickListener事件响应中,只有获取焦点的时候才会响应, 如当焦点在别的控件上时,只能先点击获取焦点,第二次点击才会响应,解决办法改用setOnTouchListener监听, android.view.View下的OnTouchListener接口是只要触摸(touch)状态改变,就会触发该事件。先记录下来,分享一下
UITableViewCell点击两次才响应的原因
原因是因为错用成了这个函数 [cpp] view plaincopy - (void)tableView:didDeselectRowAtIndexPath:   而正确的应该是这个 [cpp] view plaincopy -(void)tableView:(UITableV
实现只响应第一次按钮单击,第二次不响应
今天在完成一个应用时,要求在规定的时间条件内按钮只能响应第一次的点击,第二次甚至更多次不能有响应,如果按钮是一个button则好说,他有disabled属性,但是如果我们点击的是一张图片,或者是其他的呢,这个时候有一个万用的方法:就是用判断语句  if(){}    以javascript为例,如:       var count=0;//在设置时,将他设置为全局属性      
Android 关于嵌套listView时onItemClick事件不响应的解决办法
转载地址https://my.oschina.net/onlytwo/blog/70205和http://www.cnblogs.com/eyu8874521/archive/2012/10/17/2727882.html 当我们使用listView嵌套button或者其它clickable控件时会出现listView的onitemClick事件不响应的问题。我们只需要在item的xml