0

可能重复:
preventDefault() 对我不起作用

我有这个 HTML 代码

<div id="nav-bar">  
  <span>  
        <a href="check.html">check</a>  
      </span>  
</div>

现在我正在尝试为此锚标记绑定点击事件并使用 stopPropagation 但它不起作用。

$('div#nav-bar').filter('a').click(function(event){
    event.preventDefault();
});
4

5 回答 5

2

你在滥用.filter(). 这是为了缩小 jQuery 对象的选择范围。将在 jQuery 对象的元素中查找匹配的元素(因此.find()在元素中查找)。$('div#nav-bar').find('a')<a><div id="nav-bar">

但是,如果您直接使用直接选择器,您也会发现更好的里程数:

$('#nav-bar a').click(function (e) {
    e.preventDefault();
});

选择器#nav-bar a选择<a>元素内的所有#nav-bar元素。

于 2012-08-28T17:01:10.103 回答
1

您应该使用从以下find()位置获取<a>元素#nav-bar

$('#nav-bar').find('a').click(function(event) {
    event.preventDefault();
});

另一种选择是更改选择器

$('#nav-bar a').click(function(event) {
    event.preventDefault();
});
于 2012-08-28T16:58:16.300 回答
1
$('#nav-bar a').click(function(event){
    event.preventDefault();
});  
于 2012-08-28T16:58:45.397 回答
1
$('#nav-bar').on("click", "a", function(event){
    event.preventDefault();
});
于 2012-08-28T16:59:12.147 回答
1

你不需要.find()也不需要e.preventDefault()。(显然你不需要.filter().

<div id="nav-bar">  
  <span>  
        <a href="#" data-url="check.html">check</a>  
      </span>  
</div>



$('div#nav-bar  a').click(function(){
   var url = $(this).data('url');
   window.location.href = url;
});
于 2012-08-28T16:59:13.807 回答