Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查以查看当前单击元素的值是否等于上一个单击元素的值_Javascript - Fatal编程技术网

Javascript 检查以查看当前单击元素的值是否等于上一个单击元素的值

Javascript 检查以查看当前单击元素的值是否等于上一个单击元素的值,javascript,Javascript,我有一个容器中显示的项目列表,每个容器都有一个下拉列表。容器列表的外观片段: 当我点击按钮时,下拉菜单会显示出来,但是,当我尝试点击任何其他按钮时,dd会停留并且不会隐藏。列表是动态创建的。我想做的是,如果当前单击的元素与先前单击的元素相同,那么隐藏第一个dd菜单 是否有方法检查单击的元素是否等于javascript中先前单击的元素(无jquery) 代码: 这可能吗? 谢谢您可以使用is函数使用jQuery测试对象相等性。要求1.6或更高 var stuff = $('#stuff'); v

我有一个容器中显示的项目列表,每个容器都有一个下拉列表。容器列表的外观片段:

当我点击按钮时,下拉菜单会显示出来,但是,当我尝试点击任何其他按钮时,dd会停留并且不会隐藏。列表是动态创建的。我想做的是,如果当前单击的元素与先前单击的元素相同,那么隐藏第一个dd菜单 是否有方法检查单击的元素是否等于javascript中先前单击的元素(无jquery)

代码:

这可能吗?
谢谢

您可以使用is函数使用jQuery测试对象相等性。要求1.6或更高

var stuff = $('#stuff');
var thing = stuff;


if (stuff.is(thing)) {
    // the same
}
因此,对于您的情况,这应该是可行的:

afterRender: function() {
   this.el.on('click', function(e) {
       var clickedElm = $(e.getTarget());
       var secondElm = $(secondClickedElm);
       if (clickedElm.is(secondElm)){
           // same elements
       }                   
   },this);
}

一种方法是动态地向div添加/删除一个类,指示它是否打开。然后单击,您可以切换该类

例如:

let containers = document.getElementsByClassName('container');
for (let i=0; i<containers.length; i++) {
    let button = containers.item(i).getElementsByClassName('button')[0];
    let menu   = containers.item(i).getElementsByClassName('menu'  )[0];
    button.addEventListener('click', function() {
        menu.classList.toggle('open');
    });
}
jQuery示例:

使用
var
保存上次单击的元素,然后每次单击检查是否单击了相同的元素,然后重置
上次单击的
,否则更新
上次单击的

var;
$('.container')。在('click',函数(e)上{
如果(此==上次单击){
最后点击=“”;
$(this.children('.menu').hide();
}否则{
lastClicked=这个;
$('.menu').hide();
$(this.children('.menu').show();
}
});
.container{
边框:1px实心#333;
高度:300px;
宽度:200px;
浮动:对;
右边距:20px;
}
.菜单{
显示:无;
}
.按钮{
边框:1px实心#333;
背景:#333;
浮动:对;
高度:20px;
宽度:20px;
}

选择1
选择2
选择1
选择2
选择1
选择2

您可以隐藏所有内容,然后只显示单击的内容,如果已单击,请单击执行切换这正是我的问题,如何检查条件以添加切换类..我在渲染时隐藏所有内容,单击时仅显示一个..抱歉,仅使用javascript,否jquery@sarah
this.el.on('click',函数(e){
在您的代码中,这是jQuery,不是吗?它的extjs/javascript代码不是jQuery,但我正在寻找一个简单的js函数来执行这个函数(不必在extjs中)。我在寻找显示/隐藏类的条件,上面显示的一个不适用于您是否使用jQuery?您可以切换一个类:
let containers = document.getElementsByClassName('container');
for (let i=0; i<containers.length; i++) {
    let button = containers.item(i).getElementsByClassName('button')[0];
    let menu   = containers.item(i).getElementsByClassName('menu'  )[0];
    button.addEventListener('click', function() {
        menu.classList.toggle('open');
    });
}
.open {
    display: block;
}