Проверьте, какой элемент был нажат с помощью 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 для этого? Большое спасибо заранее.
Ответы
Ответ 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.');
}
});