Jquery 上次单击的元素
我有一张这样的div列表:Jquery 上次单击的元素,jquery,Jquery,我有一张这样的div列表: <div class="item">Click</div> <div class="content">Hidden Content</div> <div class="item">Click</div> <div class="content">Hidden Content</div> <div class="item">Click</div> &l
<div class="item">Click</div>
<div class="content">Hidden Content</div>
<div class="item">Click</div>
<div class="content">Hidden Content</div>
<div class="item">Click</div>
<div class="content">Hidden Content</div>
<div class="item">Click</div>
<div class="content">Hidden Content</div>
<div class="item">Click</div>
<div class="content">Hidden Content</div>
点击
隐藏内容
点击
隐藏内容
点击
隐藏内容
点击
隐藏内容
点击
隐藏内容
加载页面时,将显示具有id内容的第一个div。我想做的是,当我单击其他一些div(id=“item”)时,隐藏上一个单击的项目的内容,并对上一个单击的div(id=“item”)进行一些更改。到目前为止,我已经尝试过:
$(document).ready(function(){
$(".item").first().css("border-right","none");
$(".item").click(function(e) {
$pressed = $(this);
if ($pressed.data("lastclick")){
$pressed.data("lastclick").css("border-right","solid");
$pressed.data("lastclick").css("border-right-width","1px");
$pressed.data("lastclick").find("span").remove();
}
$(this).next(".content").slideToggle(\'slow\', function() {
if ( $(this).is(":visible")) {
$pressed.css("border-right","none");
$pressed.append(\'<span style="float:right;font-weight:bold">\'+$(this).children().length+\'</span>\');
$pressed.data("lastclick",$pressed);
}
});});});
$(文档).ready(函数(){
$(“.item”).first().css(“右边框”、“无”);
$(“.item”)。单击(函数(e){
$pressed=$(这个);
如果($pressed.data(“lastclick”)){
$pressed.data(“lastclick”).css(“右边框”、“实心”);
$pressed.data(“lastclick”).css(“右边框宽度”、“1px”);
$pressed.data(“lastclick”).find(“span”).remove();
}
$(this).next(.content”).slideToggle(\'slow\',function(){
如果($(this).is(“:可见”)){
$pressed.css(“右边框”、“无”);
$pressed.append(\'\'+$(this.children().length+\'\');
$pressed.data(“lastclick”,$pressed);
}
});});});
您可以通过执行类似于此的操作来简化代码
$('.item').click(function(){
$('.content').slideUp();
$(this).next('.content').slideDown()
})
您可以简单地通过执行类似于此的操作来编写代码
$('.item').click(function(){
$('.content').slideUp();
$(this).next('.content').slideDown()
})
将最后单击的项存储在简单的JavaScript变量中
var lastClicked;
$(".item").click(function(e) {
$(this). // Do your stuff to the clicked element here
// Then do what you will to the last-clicked element
// ...
// And finally assign the clicked element to the lastClicked variable
lastClicked = clicked;
}
一些有用的提示:
- 如评论中所述。是类选择器,#是ID选择器。在您的示例中,您试图使用类选择器按ID选择元素
- 在我有
的地方,你可以链接操作符。也就是说,您可以将CSS操作符与其余的操作符链接在一起,并使用一行链接的命令,而不是重复选择器(这是一种性能浪费)$(这个)
- 您可以使用带有.css()命令的“映射”一次应用多个样式,如下所示:
border-right: 1px solid black;
将最后单击的项存储在简单的JavaScript变量中
var lastClicked;
$(".item").click(function(e) {
$(this). // Do your stuff to the clicked element here
// Then do what you will to the last-clicked element
// ...
// And finally assign the clicked element to the lastClicked variable
lastClicked = clicked;
}
一些有用的提示:
- 如评论中所述。是类选择器,#是ID选择器。在您的示例中,您试图使用类选择器按ID选择元素
- 在我有
的地方,你可以链接操作符。也就是说,您可以将CSS操作符与其余的操作符链接在一起,并使用一行链接的命令,而不是重复选择器(这是一种性能浪费)$(这个)
- 您可以使用带有.css()命令的“映射”一次应用多个样式,如下所示:
border-right: 1px solid black;
假设你的意思是
class=“item”
和class=“content”
而不是id=“item”
和id=“content”
?除了有重复的id之外,你为什么要一直逃避单引号?哇,这段代码太乱了,你真的应该读一些关于jQuery的教程,或者至少是您正在使用的函数的文档。是否可以安全地假设您的意思是class=“item”
和class=“content”
,而不是id=“item”
和id=“content”
?除了有重复的id之外,为什么要一直转义单引号?哇,这段代码真是一团糟,您应该阅读一些关于jQuery的教程,或者至少是您正在使用的函数的文档。我如何知道上次单击的元素是哪一个?在打开新元素之前,您隐藏了所有内容。这确保了上一个元素是隐藏的。我如何知道上次单击的元素是哪一个?在打开新元素之前,您隐藏了所有内容。这确保了上一个元素是隐藏的修改您的选择器以匹配当前标记:从#item
到[id=item]
,或者匹配您的答案中建议的标记:从#item
到。item
我发布后他编辑了他的代码。为了清楚起见,我将改变。谢谢你的提醒。在这种情况下,“点击”是什么?因为如果你分配$this,它就会被覆盖。我不明白这个解决方案:(我会修改你的选择器,使其与当前标记相匹配:从#item
到[id=item]
,或者与你的答案中建议的标记相匹配:从#item
到。item
他在我发布后编辑了他的代码。为了清晰起见,我将进行更改。谢谢提醒。什么是“点击”在这种情况下?因为如果您分配$this,它将被覆盖。我不理解这种解决方案:(