【问题标题】:Issues with removing attribute from first click(function()) after the second click(function())在第二次点击(函数())之后从第一次点击(函数())中删除属性的问题
【发布时间】:2013-05-15 03:30:55
【问题描述】:

女士们先生们,晚上好,

在第二次点击功能发生后,我正在尝试弄清楚如何从第一次点击功能中删除属性。

<script type="text/javascript">
$(document).ready(function(){

$('.description').hide();

$('.open').click(function(){
    $(this).attr('id', 'active');  
    $('.description').hide(); 
    var section = $(this).attr('rel');
    $(section).slideToggle('fast');
});

$('.close').click(function(){
    $(this).parents('.description').slideUp('fast'); 
    $('.open').removeAttr('id', 'active');   
});
});
</script>

我的意思是,虽然我的隐藏 DIV 上有一个关闭按钮,一旦单击它就可以正常工作(即它从 .open 类中删除属性),但我看不到它如果隐藏的 DIV 通过单击然后下一步单击功能关闭,则可以工作。

我可能真的没有很好地解释自己,所以也许举个例子更简单:

Click Function Issues Here

我只为前两个菜单项(Cashier & Deli)创建了 DIV,所以我将使用这两个示例。如果您单击 Cashier 项目,隐藏的 DIV 会出现,如果您在该 DIV(右对齐)上按“CLOSE”,则活动状态会在第一个菜单项上消失。伟大的。这行得通。

但是,如果我决定关闭隐藏的 DIV,而不是通过“关闭”链接,而是通过单击下一个菜单项 (Deli),Cashier 和 Deli 菜单项都将保持活动状态。再说一次,我的问题是,当第二个菜单项上的第二次单击功能发生时,我是否可以以某种方式将其删除。

提前非常感谢!

【问题讨论】:

  • 一开始为什么要去掉属性
  • 因为我不希望菜单项保持活动状态 - 即。如您在网站上的示例中所见,保持绿色。
  • 最好使用一个类来代替.. 只需使用 addClass 和 removeClass 就可以了
  • 是的。那是行不通的。刚试了一下。这是一个添加类,然后在 .close 函数和下一个 .open 单击(函数())发生时将其删除的问题。这就是问题所在,而不是我添加了属性还是类。

标签: jquery slidetoggle


【解决方案1】:

删除id 属性是一种非常糟糕的方法,因为您可以非常轻松地执行相同的任务。

我还看到您正在使用精灵,并且您已经为它准备了相关的图像..

所以试试这个方法..

$('.description').hide();

$('.open').click(function(){
    var $this = $(this);
    $('.description').hide(); 
    $this.addClass('active');
    // Select all the open tags
    var $tags = $('.open').not($this);
    // Remove the active class for all the items except the clicked open
    $tags.removeClass('active');

    var section = $(this).attr('rel');
    $(section).slideToggle('fast');
});

$('.close').click(function(){
    $(this).closest('.description').slideUp('fast'); 
    $('.open').removeClass('active');
});

【讨论】:

  • 减去您忘记在 click(function()) 之后添加活动类的事实,这个工作!太感谢了!我是 jQuery 的新手,但感谢像你这样的人,我正在缓慢但肯定地学习。谢谢! :)
  • 嘿嘿@Sushanth。如果您不介意帮忙,可能还有一个问题!所以脚本工作正常,但如果你现在看一下该站点:Again with the Issues :(,一旦激活了活动类,就好像原始灰色图像正在显示一样 - 即。图像看起来有点颗粒感,与您将鼠标悬停在图像上时不同。有什么办法可以对抗这种情况吗?我正在考虑如何在 CSS 中做到这一点,但我认为它不能通过 CSS 来完成……只有 jQuery?
  • 嘿@Sushanth - 很抱歉再次打扰你,但你知道为什么这个脚本不能在 IE6/7/8 中工作吗?它在 9 中工作得很好,但它在 9 以下的任何其他人中都非常讨厌我。:(
  • 我在页面上看到三个错误。为什么在您的页面上多次包含 jQuery。在页面 22 and 43 .. 删除后者或将第 22 行的那个替换为 cdn .. 接下来是检查 preview_mode == true 是否在线 54 of default.js .. 在比较之前尝试声明变量.. 下一个是说fancybox未定义..检查脚本是否正确加载并检查是否有什么导致冲突
  • 这与我构建它的平台有关。在我的案例中,我实际上已经修复了脚本,但是我必须在其上构建站点的平台对于验证代码来说是可怕的,因为它添加了所有这些不必要的脚本。我将看一下其中包含的两个 jQuery 实例。我包含了我自己的链接,因为我什至不知道这个平台有包含它的选项。 /facepalm 谢谢!
猜你喜欢
  • 2017-07-03
  • 1970-01-01
  • 2019-09-28
  • 2013-04-20
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 2017-05-17
  • 1970-01-01
相关资源
最近更新 更多