我正在使用jQuery.post在用户单击外部链接时执行操作.我已将onClick事件附加到链接:
<a id="lib-geo57" onClick="javascript:dConvert('lib-geo','57');"
Run Code Online (Sandbox Code Playgroud)
事件触发,但此操作只应执行一次.为了避免第二次触发,我想删除onClick属性:
function dConvert(a,k){
$.post("dConverter",{aid:a,key:k});
$("#"+a+k).removeAttr('onclick');
};
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我也试过了
$("#"+a+k).attr('onclick','');
Run Code Online (Sandbox Code Playgroud)
没有成功.post函数继续在上述两个例子中起作用.
为什么我无法删除或更改onClick属性?什么是阻止我的帖子多次执行的更好策略?
Rus*_*Cam 14
使用one()将在第一次<a>单击链接后删除事件处理程序.
$('#lib-geo57').one('click', function() {
$.post("dConverter",{aid:'lib-geo',key:'57'});
});
Run Code Online (Sandbox Code Playgroud)
或者您可以使用jQuery定义click事件,然后使用jQuery删除(但这实际上是使用的one()方式).
$('#lib-geo57').bind('click', function() {
$.post("dConverter",{aid:'lib-geo',key:'57'});
$(this).unbind('click');
});
Run Code Online (Sandbox Code Playgroud)
如果您坚持使用onclick内联属性,那么您只需要为属性指定null以在第一次单击后删除事件处理程序.
function dConvert(a,k){
$.post("dConverter",{aid:a,key:k});
$("#"+a+k)[0].onclick = null;
};
Run Code Online (Sandbox Code Playgroud)
正如另一张海报所指出的,这种变化是客户端的,因此不会在页面刷新期间保持不变.如果这是你需要的,你需要提出一些机制来坚持改变.大多数Web框架都有一个执行此操作的机制
| 归档时间: |
|
| 查看次数: |
7571 次 |
| 最近记录: |