0

这是我的 jQuery 代码:

$('.ajax_modal a').not('.popup').live('click', function(e){

//do something

 });

当我单击锚点 a.popup 时,我希望什么都不会发生:

<div class="ajax_modal">
<a class="popup">Should do nothing</div>
<a class="something">Should do something<a>
</div>

相反,我收到以下错误,这破坏了我的页面:

错误:语法错误,无法识别的表达式:.ajax_modal a.not(.popup)

4

3 回答 3

2

.live()不适用于链式遍历方法。

将其更改为

$('.ajax_modal a:.not(.popup)')
于 2013-02-06T19:15:28.603 回答
1

1:标签没有正确关闭。

<div class="ajax_modal">
  <a class="popup">Should do nothing</div>
  <a class="something">Should do something<a>
</div>

应该:

<div class="ajax_modal">
  <a class="popup">Should do nothing</a> <!-- changed from </div> -->
  <a class="something">Should do something</a> <!-- changed from <a> -->
</div>

2:你最好使用:not()而不是.not()如下所示:

$('.ajax_modal a:not(".popup")').on('click', function(e){
   console.log(this);
});

3:最后,live已被弃用。所以用来on绑定事件

例子

于 2013-02-06T19:18:59.543 回答
0

可能是因为您的“弹出”超链接是用标签而不是标签关闭的。同样,“某事”超链接没有正确关闭。另外值得注意的是:一些浏览器抱怨没有在超链接标签中包含“href”属性,所以至少添加href="#"它们。

于 2013-02-06T19:19:25.317 回答