Jquery 上次单击的元素

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列表:

<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()命令的“映射”一次应用多个样式,如下所示:

.css({border right:'solid',border right width:'1px'})

。。。但与您的情况一样,您只是在修改边界,您可以(也应该)简单地执行以下操作:

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()命令的“映射”一次应用多个样式,如下所示:

.css({border right:'solid',border right width:'1px'})

。。。但与您的情况一样,您只是在修改边界,您可以(也应该)简单地执行以下操作:

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,它将被覆盖。我不理解这种解决方案:(