【问题标题】:A function with changing variable, dependent on a class具有可变变量的函数,取决于类
【发布时间】:2015-07-30 01:46:27
【问题描述】:

所以,首先是一些背景知识。 我有 9 种类型的房间,它们显示为带有名称的缩略图。我想要做的是点击“附加信息” - 房间消失,所选房间类型的扩展版本将出现描述和更大的图片。此外,还可以在展开视图中进行下一个和上一个。我对这个扩展和上一个/下一个没有问题。但是!

这就是我想要实现的目标:如果代码看起来差不多

<ul id="room_holder">
 <li><div class="room 1">Additional Info</div></li>
 <li><div class="room 2">Additional Info</div></li>

等等…… 可扩展区域如下所示:

<div id="expandable">
 <div id="picture">Blah-blah-blah, some description, etc</div>
</div>

所以,基本上,我想不通的是如何在按下相应的缩略图时显示所需的幻灯片。我知道我可以使用 .addClass 方法,并为每个数字 (1-9) 复制代码 9 次。但我相信,如果我有某种函数,它会紧凑 9 倍,它通过使用 .split(' ')[1] 获取第二个类名(数字),然后将其用作部分变量的一部分这将打开相应的可展开视图。所以,我的问题是:我该怎么做?我是 javascript 的新手,但请尝试在旅途中学习!

哦,我一直在尝试处理的代码笔是: http://codepen.io/godban/pen/QbZmxz

【问题讨论】:

  • 您为什么要尝试使用类来唯一标识房间?为什么不使用id="roomLink1"data-room-number="1" 属性?
  • 就像我说的,如果它是通过 something-something-number 定义的,它是每个的唯一标识符,所以 javascript 将被重写 9 次。但是,如果函数使用由 seconds 类属性定义的“数字”参数 - 代码只出现一次。我相信在页面上会容易得多,并且考虑到我的页面已经大量配备了脚本 - 我正在尽量减少我可以做的事情。但否则你的解决方案会适合我!
  • 我的解决方案确实适合你,只是你还不明白。您将编写代码一次,然后单击它找出data-room-number 是针对被单击的特定项目的。

标签: javascript jquery css function onclick


【解决方案1】:

首先,您应该使用 data-* 属性而不是类(HTML5 中的新功能)data attributes, w3school

<ul id="room_holder">
 <li><div class="room" data-room="1">Additional Info</div></li>
 <li><div class="room" data-room="2">Additional Info</div></li>

然后,使用 jQuery .click( handler ) 中的点击功能,这样就可以知道哪个被点击了:

$(".room").click(function(event){
    var target = event.currentTarget;
    var room = $(target).data("room");
    alert(room);
});

【讨论】:

  • 我会尝试,我会得到结果
  • 好的,所以我试过了,但无法弄清楚,即为什么行 $(".room" + room).addClass(room) 不起作用?如果我删除“+房间”位 - 它可以工作,但将类应用于所有具有 .room 类的 div,而不是被点击的那个。我错过了什么吗?
  • 我在想,var room 是否被视为字符串而 nt 是数字变量?会不会是这个问题?
  • 另外,我发现css的顺序也很重要。因此,如果我应用 addClass .one 然后 .two-two 永远存在,无论我再次按多少次 .one 。如果我更改 css 属性的顺序,以便在 .one 之前定义 .two,则后者将永远存在。到底是怎么回事?!有没有办法将函数返回到某种原始属性?或者如何解决?
  • 你可以使用选择器$('.room[data-room=1]')它只会选择属性data-room等于1的房间类
猜你喜欢
  • 1970-01-01
  • 2015-12-07
  • 1970-01-01
  • 2023-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-24
  • 2018-04-09
相关资源
最近更新 更多