Javascript Jquery-if语句匹配各种条件

Javascript Jquery-if语句匹配各种条件,javascript,jquery,if-statement,contains,Javascript,Jquery,If Statement,Contains,我想在点击链接时运行一些函数,但我想排除符合某些条件的链接。。。我不确定我在这方面哪里出了问题,但它似乎仍然在一个链接上运行该功能,该链接的href为top 而且 <a href='#top'>Don't run function</a> <a class='.TypesOfProperties' href='/mypage'>Don't run function</a> <a target='_blank' href='/mypage'&g

我想在点击链接时运行一些函数,但我想排除符合某些条件的链接。。。我不确定我在这方面哪里出了问题,但它似乎仍然在一个链接上运行该功能,该链接的href为top

而且

<a href='#top'>Don't run function</a>
<a class='.TypesOfProperties' href='/mypage'>Don't run function</a>
<a target='_blank' href='/mypage'>Don't run function</a>

<a href='/mypage'>Do run function</a>
<a target='_parent' href='/mypage'>Do run function</a>

有什么想法吗?

这样您就可以减少不必要的处理程序绑定

$('a[target="_parent"]').not('[href*="#"],.TypesOfProperties,[target]').click(function() {
     // DO SOMETHING
});

与.is不同,.not不返回true或false,它返回jQuery对象

给定一个表示一组DOM元素的jQuery对象,.not方法从匹配元素的子集构造一个新的jQuery对象。针对每个元件对提供的选择器进行测试;与选择器不匹配的元素将包含在结果中

jQuery文档:

如果你想让你的陈述有效,你需要检查长度如下:

if(($(this).not('[href*="#"], .TypesOfProperties, [target]').length) || $(this).is('[target="_parent"]'))
如果length=0,则与false相同。

$this.not。。。不是检查,它删除不满足给定条件的元素。 因此,如果单击$this.not'[href*=]'将返回一个空的jQuery对象

您可以检查长度和多个选择器:

if ($(this).not('[href*="#"] , .TypesOfProperties').length || $(this).is('[target="_parent"]')) {

提供html代码似乎更容易为您想要的条件创建一个处理程序,而不是过滤掉所有您不想要的条件。当然,一定有什么东西把这些链接分开了。一个小问题是:代码中有语法错误。应该有一个右括号,为了更好的形式,在最后一个大括号后面应该有一个终止分号。is,not不返回true或false-realy?与.is不同,.not不返回true或false
if ($(this).not('[href*="#"] , .TypesOfProperties').length || $(this).is('[target="_parent"]')) {