2014-01-17 103 views
0

这可能相当简单,但我真的尝试过每个组合,我可以想到(和谷歌)如何解决这个问题,但没有任何工作。

我这有块:(?!)

$(document).ready(function(){ 
    $('a').not("div.thatguy a, div#thisguy a").click(function(event) { 
     // do things 
    }); 
}); 

什么奇怪的是,它不是正确选择的链接。

我想要的是它适用于除div.thatguy和div#thisguy内的所有链接。

现在所发生的事情是,它是适用于这些类型的链接:

  • domain.com/about/
  • domain.com/that/
  • domain.com
  • domain.com /例子/

但它并不想与这些链接的工作:

  • domain.com/2010/check/
  • domain.com/2009/post/
  • domain.com/2012/thing/

这也是无视我想要的链接它忽略。

帮助?

编辑:我刚刚意识到可能是其他链接不工作的原因。第一批链接(工作)在第二批链接(不起作用)的时候会被加载并通过AJAX链接进行替换。 jQuery可能不适用于这些吗?

编辑2:这似乎工作。我没有意识到AJAX内容会影响脚本。抱歉! $('a').not("div.insertedimg a, div#thisguy").on('click', function(event) {

+3

您正在使用什么HTML? –

+0

请发布您的HTML结构,并可能JSfiddle。 – CharliePrynn

+0

@SamJones对不起,我不知道我怎么能压缩HTML为合适的小提琴。这是用于页面和帖子的WordPress设置。 – Arkuen

回答

2

试试这个:

$(document).ready(function(){ 
    $('a').not("div.thatguy a").not("div#thisguy a").click(function(event) { 
     // do things 
    }); 
}); 

或者,

$(document).ready(function(){ 
    $('a:not("div.thatguy a"):not("div#thisguy a")').click(function(event) { 
     // do things 
    }); 
}); 
@Salman一个 updated demo

我修的jsfiddle | updated demo2哪些工作。


您需要使用event delegation

例子:

// attach a directly bound event 
$("#list a").on("click", function(event) { 
event.preventDefault(); 
console.log($(this).text()); 
}); 

// attach a delegated event 
$("#list").on("click", "a", function(event) { 
event.preventDefault(); 
console.log($(this).text()); 
}); 
+0

给了它一杆,没有骰子:(编辑:第二块导致没有任何工作 – Arkuen

+0

之间有空间:没有选择器。更新。现在尝试。 –

+0

尝试,仍然没有。 – Arkuen

1

是的,你需要使用事件代表团

$(document).ready(function(){ 
    $(document).on('click', 'a:not(div.thatguy a, #thisguy a)', function(event) { 
     // do things 
    }); 
}); 
+0

谢谢!我没有意识到我需要使用.on() – Arkuen