2014-01-17 6 views
0

это, вероятно, довольно просто, но я действительно пробовал каждую комбо, о которой я мог думать (и Google) о том, как исправить это, но ничего не получилось.

Я получил этот блок: (?!)

$(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 
    }); 
}); 

Я посещаю jsfiddle из @Salman А updated demo | 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

Смежные вопросы