为什么我得到javascript:来自这个jquery的无法识别的表达式?

时间:2013-02-06 19:12:53

标签: jquery

这是我的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)

3 个答案:

答案 0 :(得分:2)

.live()对链式遍历方法不起作用。

将其更改为

$('.ajax_modal a:.not(.popup)')

答案 1 :(得分: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绑定事件

<强> EXAMPLE

答案 2 :(得分:0)

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