检查用jQuery单击了哪个元素

use*_*152 31 javascript 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');
};
Run Code Online (Sandbox Code Playgroud)

什么是适当的jQuery语法?提前谢谢了.

Osc*_*car 59

使用这个,我想我可以得到你的想法.

现场演示: 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');
    }

    if (article) {
       // Do Something
    }
});?
Run Code Online (Sandbox Code Playgroud)


vpi*_*mph 16

所以你这样做有点倒退.通常你会做这样的事情:

?<div class='article'>
  Article 1
</div>
<div class='article'>
  Article 2
</div>
<div class='article'>
  Article 3
</div>?
Run Code Online (Sandbox Code Playgroud)

然后在你的jQuery中:

$('.article').click(function(){
    article = $(this).text(); //$(this) is what you clicked!
    });?
Run Code Online (Sandbox Code Playgroud)

当我看到类似的东西#search-item .search-article#search-item .search-article,#search-item .search-article我觉得你过度指定了CSS,这使得编写简洁的jQuery变得非常困难.如果可能的话应该避免这种情况.

  • 对于将来阅读此答案的其他人来说,这只是一个小提示:如果您不确定“$(this)”是否选择了您期望的内容,请使用“console.log($(this).get())” 。这将在控制台日志中为您打印所选元素的列表。 (2认同)

Gen*_* Bo 10

来自vpiTriumph的回答很好地阐述了细节.
当您想要访问的数据集有唯一元素ID时,这是一个小方便的变体:

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