a标签click被执行两次流标后怎么办怎么办,问题在哪,求解

jQuery防止click双击多次提交及传递动态函数方法
&&&&&当前位置: & & & &
jQuery防止click双击多次提交及传递动态函数方法
作者:佚名
文章来源:
今天是写的是关于JQ的双击事件防止多次提交的问题,并且通过函数可以批量定义,通能性更强了,通过方法动态绑定元素的事件。而且可以动态传递函数名或者多参数等(本实例只传递函数名通过Eval调用)。
我们都知道在jQuery的事件绑定中,执行双击事件(dblclick)时能触发两次单击事件(click)。即一个标签元素(如div等),如果元素同时绑定了单击事件(click)和双击事件(dblclick),那么执行单击事件(click)时,不会触发双击事件(dblclick), 执行双击事件(dblclick)时却会触发两次单击事件(click)。
先看一下点击事件的执行顺序:
  单击(click):mousedown,mouseout,click;  双击(dblclick):mousedown,mouseout,click , mousedown,mouseout,click,dblclick;
  在双击事件(dblclick),触发的两次单击事件(click)中,第一次的单击事件(click)会被屏蔽掉,但第二次不会。也就是说双击事件(dblclick)会返回一次单击事件(click)结果和一次双击事件(dblclick) 结果。而不是一次双击事件(dblclick)结果和两次单击事件结果(click)。 &
  如此这般的话,只需消灭掉多余的一次单击事件(click),这个问题就解决了。
效果如下图:
源代码如下:
&!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&
&html xmlns="http://www.w3.org/1999/xhtml"&
&meta http-equiv="Content-Type" content="text/ charset=gb2312" /&
&title&jQuery防止click双击多次执行及传递动态函数方法&/title&
&script type="text/javascript" src="#"&&/script&
&div id="show"&显示测试结果:&/div&
&div style="background:#f60;color:#width:80padding:10px 20" id="div" onclick="ss1('DIV事件')"&点击我吧&/div&
&input type="button" value="按钮一" id="but1" onclick="ss2('INPUT事件')"/&
&script language="javascript"&
function std (obj,vs){
var TimeFn =
var funs=$(obj).attr("onclick");
$(obj).click(function() {
clearTimeout(TimeFn);
TimeFn = setTimeout(function(){
eval(funs);
clearTimeout(TimeFn);
$(obj).dblclick(function() {
clearTimeout(TimeFn);
$(obj).removeAttr("onclick");
var ss1=function(s){$("#show").html("DIV显示测试结果:"+s);alert("a");};//div调用的方法
var ss2=function(s){$("#show").html("INPUT显示测试结果:"+s);alert("b");};//input调用的方法
//通过方法动态绑定元素的事件
std("#div","div");
std("#but1","button1");
&&☎&友情链接JQuery给元素绑定click事件多次执行的解决方法,JavaScript教程,JavaScript案例,JavaScript实例
本站中文域名:、 
        
     
 |  |  |  |  
     |     |     |   
您的位置: &&
&& JQuery给元素绑定click事件多次执行的解决方法
JQuery给元素绑定click事件多次执行的解决方法
  本文标签:绑定click事件,多次执行
原绑定方法: 复制代码 代码如下: $("#sdfsd").on("mouseout",function(e){ ***** });
这种方法只会在原click方法中继续添加新方法; 解决办法更改绑定方法为: 复制代码 代码如下: $("#sdfsd").unbind("click").click(function(e){ ***** });
在绑定新click方法前对元素所绑定的click方法解绑
Google搜索中
搜狗搜索中
在线教程导航
数据库开发
热点软件下载
车友晒价详情
<font color="#FF万
江苏米兰,最低14.99万送导航
<font color="#FF万
扬州金太阳,一年免息贷款。
<font color="#FF
3000元装修
浦株路上的,优惠大概在2万出头!
<font color="#FF万
华兴深蓝,送导航,倒车影像等,第一次去谈,目前价格27万
<font color="#FF万
苏舜无赠送
<font color="#FF万
原厂贴膜,脚垫
<font color="#FF万
南京朗驰集团报价,有赠送,具体未谈
<font color="#FF
南京市大明路那边
团购车型:
加入微信号,了解汽车///活动
| 站长工具:
加入官方微信号
渠道报价/招聘
任你发任你查
All Rights Reserved.
珠江路在线版权所有
苏ICP备号 中文域名:
 |  | 评论-2641&
trackbacks-0
今天同事遇到一个神一样的BUG:
在原生浏览器下,为dom元素绑定一个click事件,其中有个a标签外链,点击a后进入其他页面,点击浏览器后退后,页面点击事件全体失效!
我于是用ios测了下没事,用andriod其他浏览器试了下也没事,就是原生的有问题,怀疑是特定的手机有问题,又陆续换了几台,发现原生的都有问题
于是便开始找解决方案,下面就来聊下今天的漫长之路,这里先给会出问题的代码:
1 &!DOCTYPE html&
&meta charset="utf-8" /&
&title&&/title&
&meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"&
&div id="ttt"&
&a href="" name="n"&百度一下&/a&
&script type="text/javascript"&
var i = 0;
var appendDiv = function (msg) {
var div = document.createElement('div');
if (msg) {
div.innerHTML =
div.innerHTML = i++;
document.body.appendChild(div);
document.addEventListener('click', function (e) {
appendDiv('click')
28 &/body&
29 &/html&
DOM事件丢失
第一步想到的当然是事件丢失了,或者就是不执行了,于是乎写了一段代码:
1 &!DOCTYPE html&
&meta charset="utf-8" /&
&title&&/title&
&meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"&
&div id="ttt"&
&a href="" name="n"&百度一下&/a& dsfsdffd&br&
&script type="text/javascript"&
var i = 0;
setInterval(function () {
var div = document.createElement('div');
div.innerHTML = i++;
document.body.appendChild(div);
var type = 'click'; //要触发的事件类型
var event = document.createEvent('MouseEvents');
event.initMouseEvent(type);
document.dispatchEvent(event);
var appendDiv = function (msg) {
var div = document.createElement('div');
if (msg) {
div.innerHTML =
div.innerHTML = i++;
document.body.appendChild(div);
document.addEventListener('click', function (e) {
appendDiv('click')
40 &/body&
41 &/html&
我定时器不停地向浏览器打印数字,而且触发document的click事件,他工作的蛮好的,但是当我点击百度一下再回来时候,便不执行了
因为我们没法在代码层面上获取dom的事件信息,所以暂时只能这样做,而我的判断是,没错!dom事件丢失了
Window事件未丢失
然后我又在这上面纠缠了好久,想试试windows的事件是否丢失,于是写下了以下代码:
1 &!DOCTYPE html&
&meta charset="utf-8" /&
&title&&/title&
&meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"&
&div id="ttt"&
&a href="" name="n"&百度一下&/a& dsfsdffd&br&
&script type="text/javascript"&
var i = 0;
setInterval(function () {
var div = document.createElement('div');
div.innerHTML = i++;
document.body.appendChild(div);
var type = 'click'; //要触发的事件类型
var event = document.createEvent('MouseEvents');
event.initMouseEvent(type);
document.dispatchEvent(event);
var appendDiv = function (msg) {
var div = document.createElement('div');
if (msg) {
div.innerHTML =
div.innerHTML = i++;
document.body.appendChild(div);
document.addEventListener('click', function (e) {
appendDiv('click')
window.onresize = function () {
appendDiv('onresize')
44 &/body&
45 &/html&
我点击回来后,发现事件还在,于是陷入深深的沉思.沉思.沉思.思.思.思.............
最后我无意间将这个问题解决了,而且解决的方案匪夷所思:
1 &!DOCTYPE html&
&meta charset="utf-8" /&
&title&&/title&
&meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"&
&div id="ttt"&
&a href="" name="n"&百度一下&/a& dsfsdffd&br&
&script type="text/javascript"&
var t = document.getElementById('ttt');
var i = 0;
setInterval(function () {
var div = document.createElement('div');
div.innerHTML = i++;
document.body.appendChild(div);
var appendDiv = function (msg) {
var div = document.createElement('div');
if (msg) {
div.innerHTML =
div.innerHTML = i++;
document.body.appendChild(div);
document.addEventListener('click', function (e) {
appendDiv('click')
34 &/body&
35 &/html&
整个解决方案耗费我两个多小时,而最终却是这么一段不起眼的代码:
var t = document.getElementById('ttt');
// var btnfree = document.getElementsByTagName('a'); 无效
// var n = document.getElementsByName('name');无效
现在问题是解决了,我却更疑惑了,一个大大的问号在我脑里回旋不去,尼玛在玩我啊......这是为什么??????
问题原理猜想
注意,此处完全是扯淡时间
andriod硬件加速
andriod原生浏览器本身使用了硬件加速功能,或者说andriod对自身的浏览器做了很好的处理
我们在页面上看到的页面具有一个dom树,而我们的事件js保存在另一个地方,而此时硬件加速为我们提供了一个类似png的中间件
他负责了通讯,但是在我们该网页转入后台时,这之间的映射关系却被破坏了
而我们js代码中若是多了这么一段代码:
var t = document.getElementById('ttt');
他的映射关系又建立起来了,如果是这样的话,是说的过去的!!!
PS:以上的理论显然无法说服我
垃圾回收/后台挂起
不得已的情况下,我想到了js的垃圾回收,dom结构活生生的在页面上,页面不会回收,里面的i一直在用也不会回收
但是我们的DOM树好像并没有神引用在页面中保存,因为没有浏览器就正好将所有的事件全部销毁了。
而后面我们在js中保存了一个dom树,他就没有销毁????
PS:这里我可以将t给delete了试试,但是我在家没有环境,只得明天再试了,今天暂时到这里
var t = document.getElementById('ttt');
最后这样加一句,问题又会复现,所以垃圾回收的概率较高。
当然,这是andriod浏览器本身一个BUG,但是如果我们可以从这种小BUG中发现大问题,或者原理性的东西,那真的该好好的研究一番了!!!
若是您有任何想法,请不吝赐教!!!
阅读(...) 评论()listview的一个奇怪问题。onItemClickListener里的参数view到底什么意思啊?上图求解
问题描述:我做的效果是点击一个item后,处于选中状态,该item变色;但是,点击第一个后,在未显示的区域,也会有一个变色,下拉出来后就看到了同时两个都变色了。
我猜想:我没有理解OnItemClickListener里的view参数的含义。
代码如下:
class&nbsp
20:10&&&[]
经常看到一个枚举数据类型当函数使用,参数是负一,不知道这代表什么意思呀,比如:
&Tcolor=(cwhite,cred,cblue);
&colorname:
implementation
21:03&&&[]
从远程服务器提取订单,以ScrollView的方式显示。每个订单view,对应一个onClick()方法。
问题是,如何对onClick()传递参数呢,执行onClick()时,需要知道这个订单的Id:order_id,订单状态:order_status等。
回复讨论(解决方案
11:40&&&[]
在VB2005中如何得到listview选定项目的INDEX,以前在VB6中很容易就可以得到为什么2005中这么难,我找了好久也没找到方法.
看见CSDN里有人说2003用:listView1.SelectedItems[0].Text
可是还是不行
一个小问题分数不多还请不要见
22:33&&&[]
(4).Value)
itmX.SubItems(5)&=&CStr(rs.Fields(5).Value)
rs.MoveNext
ListView1.View&=&lvwReport
回复讨论(解决方案)
你看看能不能将listview
22:55&&&[]
所有按钮都按不了,父VIEW上好像还有一层黑色的VIEW没有移除
回复讨论(解决方案)
还发现一个奇怪的问题
点击这个弹出VIEW上面的BUTTON后跳转到另外一个VIEW,这个VIEW中有一个WEBVIEW控件,里面加载了一个网页,点击网页上面的SELECT(下拉列表控件)的时候点击
14:17&&&[]
这是一个参数还是三个参数,参数之间加空格与不加空格的区别是什么,谢谢
回复讨论(解决方案)
一个参数。。。。
这玩意和main&的参数一个性质。。。
一个参数。。。。
这玩意和main&的参数一个性质。。。
main&的参数是用来传递命令行参数
19:50&&&[]
;f(A[]...&a2){ &&&&&& &&&} }
回复讨论(解决方案)
可变参数。
比如&public&static&void&main
-01:11&&&[]
getViewTypeCount和getItemViewType后报错
public&class&Item_Adapter&extends&BaseAdapter&{ private&List&Integer&&ls&=&new&ArrayList&Integer&(); private&Context&mC private&final&int&MaxLayout&=&2; private&int&currentT public&Item_Adapter(Context&mContext)&{ super(); this.mContext&=&mC for&(int&i&=&0;&i&&&50;&i++)&{ ls.add(i); } } @Override public&int&getViewTypeCount()&{ //&TODO&Auto-generated&method&stub return&MaxL } @Override public&int&getItemViewType(int&position)&{ //&TODO&Auto-generated&method&stub if&(position&==&0)&{ currentType&=&2; return&2; } if&(position&%&4&==&0)&{ currentType&=&1; return&1; }&else&{ currentType&=&2; return&2; } } @Override public&int&getCount()&{ //&TODO&Auto-generated&method&stub return&ls.size(); } @Override public&Object&getItem(int&position)&{ //&TODO&Auto-generated&method&stub return&ls.get(position); } @Override public&long&getItemId(int&position)&{ //&TODO&Auto-generated&method&stub return&0; } @Override public&View&getView(int&position,&View&convertView,&ViewGroup&parent)&{ //&TODO&Auto-generated&method&stub ViewHoler&viewHoler&=& ViewHoler1&viewHoler1&=& if&(convertView&==&null)&{ switch&(currentType)&{ case&1: convertView&=&LayoutInflater.from(mContext).inflate( R.layout.list_fgx,&null); viewHoler1&=&new&ViewHoler1(); viewHoler1.gg&=&(TextView)&convertView.findViewById(R.id.gg); convertView.setTag(viewHoler); case&2: convertView&=&LayoutInflater.from(mContext).inflate( R.layout.list_item,&null); viewHoler&=&new&ViewHoler(); viewHoler.title&=&(TextView)&convertView .findViewById(R.id.title); convertView.setTag(viewHoler); default: } }&else&{ switch&(currentType)&{ case&1: viewHoler1&=&(ViewHoler1)&convertView.getTag(); case&2: viewHoler&=&(ViewHoler)&convertView.getTag(); default: } } switch&(currentType)&{ case&1: viewHoler1.gg.setText(&这是广告&); case&2: viewHoler.title.setText(&这是标题&); default: } return&convertV } static&class&ViewHoler&{ TextView& } static&class&ViewHoler1&{ TextView& } }
找了一上午了&都没看出哪里有问题&调试的话就直接进错了&
回复讨论(解决方案)
/s/1nt6x949 项目下载地址&&求大神看看&哪里出现问了啊
你重写这俩哥哥方法要做什么事情呢?
你重写这俩哥哥方法要做什么事情呢? 加载不同的布局文件
这是我最近弄的不同布局的代码&希望对你有帮助
package&cn.jianguo.qinzi.view.
import&java.util.L
import&android.content.C
import&android.graphics.C
import&android.text.S
import&android.text.SpannableS
import&android.text.style.ForegroundColorS
import&android.view.LayoutI
import&android.view.View;
import&android.view.View.OnClickL
import&android.view.ViewG
import&android.widget.BaseA
import&android.widget.ImageV
import&android.widget.LinearL
import&android.widget.TextV
import&cn.jianguo.qinzi.R;
import&cn.jianguo.qinzi.constant.C
import&cn.jianguo.qinzi.http.MessageHandlerL
import&cn.jianguo.qinzi.ui.NoticeA
import&cn.jianguo.qinzi.view.adapter.bean.NoticeD
import&com.lidroid.xutils.BitmapU
import&com.lidroid.xutils.ViewU
import&com.lidroid.xutils.view.annotation.ViewI
public&class&NoticeAdapter&extends&BaseAdapter&{
private&List&NoticeData&&
private&Context&mC
private&BitmapUtils&mBitmapU
private&int&//要显示的页面&0&表示消息、1&表示赞、2&表示动态、3&表示私信
private&ViewHolder&
private&SpannableString&
public&NoticeAdapter(Context&context,&List&NoticeData&&list&,int&type)&{
this.list&=&
this.type&=&
this.mContext&=&
mBitmapUtils&=&new&BitmapUtils(mContext);
public&int&getCount()&{
return&list.size();
public&Object&getItem(int&position)&{
return&list.get(position);
public&long&getItemId(int&position)&{
//&TODO&Auto-generated&method&stub
public&View&getView(final&int&position,&View&convertView,&ViewGroup&parent)&{
if&(convertView&!=&null)&{
holder&=&(ViewHolder)&convertView.getTag();
holder&=&new&ViewHolder();
convertView&=&LayoutInflater.from(mContext).inflate(
R.layout.notice_item,&null);
ViewUtils.inject(holder,&convertView);
convertView.setTag(holder);
if&(type&==&0)&{
convertView&=&getMessage(position,&convertView);
}else&if&(type&==&1)&{
convertView&=&getPraise(convertView,&position);
return&convertV
private&View&getPraise(View&convertView,int&position)&{
NoticeData&mData&=&list.get(position);
holder.user_icon.setImageResource(mData.getUser_icon());
sp&=&MySpannableString(mData.getUser_name().length(),&mData.getUser_name()+&&Praise&you&);
holder.item_tv.setText(sp);
holder.time_view.setText(mData.getDone_time());
holder.sharedImg.setImageResource(mData.getShared_img());
holder.notice_count.setVisibility(View.GONE);
holder.praiseLayout.setVisibility(View.GONE);
return&convertV
private&View&getMessage(final&int&position,&View&convertView)&{
//&TODO&Auto-generated&method&stub
final&NoticeData&mData&=&list.get(position);
if&(mData.getData_type()&==&1)&{
holder.user_icon.setImageResource(mData.getPser_icon());
sp&=&MySpannableString(mData.getPser_name().length(),
mData.getPser_name()&+&mData.getPontent());
holder.sharedImg.setImageResource(R.drawable.bb);
holder.time_view.setText(mData.getPreated_time());
holder.item_tv.setText(sp);
if&(mData.getData_type()&==&2)&{
holder.user_icon.setImageResource(mData.getUser_icon());
sp&=&MySpannableString(mData.getUser_name().length(),
mData.getUser_name()&+&&&&Follow&you&);
holder.time_view.setText(mData.getDone_time());
if&(mData.getFollowed().equals(&1&)
&&&mData.getFollow().equals(&1&))&{
holder.sharedImg.setImageResource(R.drawable.g22x);
holder.sharedImg.setOnClickListener(new&OnClickListener()&{
public&void&onClick(View&v)&{
if&(mData.getFollow().equals(&1&))&{
list.get(position).setFollow(&0&);
list.get(position).setFollow(&1&);
MessageHandlerList.sendMessage(NoticeActivity.class,&Constant.HANDLER_MSG_WHAT_0);
holder.sharedImg.setImageResource(R.drawable.g12x);
holder.sharedImg.setOnClickListener(new&OnClickListener()&{
public&void&onClick(View&v)&{
if&(mData.getFollow().equals(&1&))&{
list.get(position).setFollow(&0&);
list.get(position).setFollow(&1&);
MessageHandlerList.sendMessage(NoticeActivity.class,&Constant.HANDLER_MSG_WHAT_0);
holder.item_tv.setText(sp);
holder.notice_count.setVisibility(View.GONE);
holder.praiseLayout.setVisibility(View.GONE);
return&convertV
class&ViewHolder&{
@ViewInject(R.id.item_iv)
private&ImageView&user_//&用户头像
@ViewInject(R.id.item_tv)
private&TextView&item_//&发布内容
@ViewInject(R.id.notice_count)
private&TextView&notice_//&私信显示条数
@ViewInject(R.id.notice_textView1)
private&TextView&time_view;//&发布时间
@ViewInject(R.id.item_praise_layout)
private&LinearLayout&praiseL//&点赞用户头像布局
@ViewInject(R.id.item_image)
private&ImageView&sharedI//&分享图片
private&SpannableString&MySpannableString(int&startlength,&String&str)&{
sp&=&new&SpannableString(str);
sp.setSpan(new&ForegroundColorSpan(Color.BLACK),&0,&startlength,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
如果要这个效果&自定义listView吧
你这是数组越界导致的错误。length&=2,&index=2
你这是数组越界导致的错误。length&=2,&index=2 我知道是数组越界&但是我这里并没有长度为2&的数组
问题已解决
这里说明一下错误原因
getViewTypeCount这个方法返回总布局数量&&
getItemViewType&&返回int类型&表示布局类型序号&
这里就需要注意了&&布局数量=2
而getItemViewType&&则就不能返回2&只能返回0或者1&因为上面getViewTypeCount已经设置了布局的个数了
所以会出现错误
虽然大家没有解决问题,还是非常感谢大家&
10:14&&&[]
现在问题就来了.上面的代码运行后,发现参数有移位现象!!即WebService端函数里参数获取到的值为:from=&ddd&,recipients=&&,subject=&&quot
13:18&&&[]
最前面,ORDER&BY&UPDATE_TIME&DESC&不起作用了,求解,我的写法有问题吗?
回复讨论(解决方案)
ROW_NUMBER()&OVER&(order&by&nbsp
21:07&&&[]
释一下,采用这种数据封装方式的过程或者原理?
有没有人能解释一下,采用这种数据封装方式的过程或者原理?
struts2使用Action来封装HTTP的请求参数,所以Ation类里需要包含请求参数对应的属性,并且需要为该属性提供对应的setter&and&getter方法
15:58&&&[]}

我要回帖

更多关于 微分方程求解 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信