Подтвердить что ты не робот

Проверьте, какой элемент был нажат с помощью jQuery

Я пытаюсь использовать оператор if, чтобы определить, какой элемент был нажат.

В основном я пытаюсь что-то кодировать по строкам:

if (the element clicked is '#news_gallery li .over') {
    var article = $('#news-article .news-article');
} else if (the element clicked is '#work_gallery li .over') {
    var article = $('#work-article .work-article');
} else if (the element clicked is '#search-item li') {
    var article = $('#search-item .search-article');
};

Каков правильный синтаксис jQuery для этого? Большое спасибо заранее.

4b9b3361

Ответ 1

Используйте это, я думаю, я могу получить вашу идею.

Живая демонстрация: http://jsfiddle.net/oscarj24/h722g/1/

$('body').click(function(e) {

    var target = $(e.target), article;

    if(target.is('#news_gallery li .over')) {
       article = $('#news-article .news-article');
    } else if (target.is('#work_gallery li .over')) {
       article = $('#work-article .work-article');
    } else if (target.is('#search-item li')) {
       article = $('#search-item .search-article');
    }

});​

Ответ 2

Итак, вы делаете это немного назад. Обычно вы делаете что-то вроде этого:

​<div class='article'>
  Article 1
</div>
<div class='article'>
  Article 2
</div>
<div class='article'>
  Article 3
</div>​

И затем в вашем jQuery:

$('.article').click(function(){
    article = $(this).text(); //$(this) is what you clicked!
    });​

Когда я вижу такие вещи, как #search-item .search-article, #search-item .search-article и #search-item .search-article, я чувствую, что вы слишком тщательно определяете свой CSS, что затрудняет запись сжатого jQuery. Этого следует избегать, если это вообще возможно.

Ответ 3

Ответ от vpiTriumph подробно описывает детали. Здесь небольшое удобное изменение, когда существуют уникальные идентификаторы элементов для набора данных, к которому вы хотите получить доступ:

$('.news-article').click(function(){    
    var id = event.target.id;
    console.log('id = ' + id); 
});

Ответ 4

Основой jQuery является возможность поиска элементов в DOM с помощью селекторов, а затем проверка свойств этих селекторов. Читайте здесь:

http://api.jquery.com/category/selectors/

Однако было бы разумнее создавать обработчики событий для событий кликов для различных функций, которые должны возникать в зависимости от того, что нажато.

Ответ 5

$("#news_gallery li .over").click(function() {
    article = $("#news-article .news-article");
});

Ответ 6

Надеюсь, это полезно для вас.

$(document).click(function(e){
    if ($('#news_gallery').on('clicked')) {
        var article = $('#news-article .news-article');
    }  
});

Ответ 7

Другим вариантом может быть использование свойства tagName для e.target. Он здесь не применяется, но скажем, что у меня есть класс, который применяется к тегу DIV или A, и я хочу посмотреть, был ли этот класс нажат, и определить, был ли он DIV или A, который был нажат. Я могу сделать что-то вроде:

$('.example-class').click(function(e){
  if ((e.target.tagName.toLowerCase()) == 'a') {
    console.log('You clicked an A element.');
  } else { // DIV, we assume in this example
    console.log('You clicked a DIV element.');
  }
});