-1

我有以下代码捕获用户单击 li 中的 a 标签时。我可以成功捕获事件,但如果我在事件中使用 setTimeout,则 a 标签中的内联“返回 false”会阻止这种情况发生。关于如何停止或删除内联标签'return false;'的任何想法?

我不能只删除它,因为它正在用于桌面站点,并且我正在覆盖其移动站点的功能。

<ul class="paginate">
 <li>1</li>
 <li>
  <a href="http://www.xxx.co.uk/xxx/" onclick="ajaxPage('2',true,'left'); return false;">2</a>
 </li>
</ul>

$('.paginate li a').click(function(){ 
 alert('Caught page'); // THIS WORKS
 setTimeout(function(){
    setSearchPrice(); // THIS DOESN'T WORK, GET SUPPRESSED BUT THE INLINE RETURN FALSE
 },1400)
});

任何帮助表示赞赏。

4

2 回答 2

0

我不能只删除它,因为它正在用于桌面站点,并且我正在覆盖其移动站点的功能。

我看不出这与它有什么关系,但您可以删除onclickDOM0 处理程序:

$('.paginate li a').each(function() {
  // Remove the onclick set up in the markup, since you're replacing it
  this.onclick = null;
}).click(function(e){ 
 // The replacement
 alert('Caught page');
 setTimeout(function(){
    setSearchPrice();
 },1400)
 // Probably want to prevent the default, since you've removed
 // the `return false` on the DOM0 handler that used to do it
 e.preventDefault();
});
于 2013-02-08T07:35:38.967 回答
-1

我会建议使用event.preventDefault(); 它将停止事件的默认操作。这是一个很好的解释它是如何工作的。

https://developer.mozilla.org/en-US/docs/DOM/event.preventDefault

于 2013-02-08T07:36:49.177 回答