JQuery Selector - Выберите это, а не это? - PullRequest
1 голос
/ 11 мая 2010

Я создал скрипт, который удивительно работает. (Я не делаю много JavaScript)

У меня есть набор изображений, перечисленных в div. Эти изображения скрыты. JQuery получает свойства изображений и помещает их в массив. При щелчке по телу фоновое изображение страницы изменяется. Это хорошо работает.

Однако теперь у меня проблема. Есть несколько элементов, которые я не должен менять фон, когда они нажаты.

А именно, навигация, нижний колонтитул и подпись. Как мне создать селектор, который делает тело кликабельным, но игнорирует клики на 3 вышеупомянутых div?

Мой текущий селектор, который не так. Похоже на это.

$("body").click (function() {

Ответы [ 4 ]

2 голосов
/ 11 мая 2010

Используйте метод .not() или селектор :not(). например:

Использование без выбора:

$('*:not(#footer, #nav, #caption)').click(function(){
    // to change background.
});

Использование метода not ():

$('*').not('#footer, #nav, #caption').click(function(){
    // to change background.
});
1 голос
/ 11 мая 2010

, если вы хотите просто body, попробуйте это:

  $('body').click(function(e){    
    if (e.target.nodeName.toLowerCase() != 'body')
      return;
    else
      alert('Yeah! this is the body alright!')
  })

или

$('body').click(function(e){    
    if (e.target.nodeName.toLowerCase() == 'body')
      alert('Yeah! this is the body alright!')
  })

quick demo .
event.target

1 голос
/ 11 мая 2010

в качестве примера

$("body:not(#navigation,#footer,.caption)").css("background-color","red");

оформить документацию для этого

1 голос
/ 11 мая 2010

Попробуй:

$("body *:not(div#navigation *, div#this *, div#that *)")

Закладка эта страница . В идеале вы должны обернуть все элементы, которые должны быть «активированы», внутри контейнера div.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...