Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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
具有多个类的jQuery元素:将一个类存储为var_Jquery_Regex_Filter_Attr - Fatal编程技术网

具有多个类的jQuery元素:将一个类存储为var

具有多个类的jQuery元素:将一个类存储为var,jquery,regex,filter,attr,Jquery,Regex,Filter,Attr,我正在尝试创建一个标准化的显示/隐藏元素系统,如下所示: <div class="opener popup_1">Click Me</div> <div class="popup popup_1">I'm usually hidden</div> 其思想是,当您单击一个opener时,它会从opener的类中过滤出“popup_where”,并将其存储为openerTarget。然后将显示class=popup和openerTarget的任何内容

我正在尝试创建一个标准化的显示/隐藏元素系统,如下所示:

<div class="opener popup_1">Click Me</div>
<div class="popup popup_1">I'm usually hidden</div>
其思想是,当您单击一个opener时,它会从opener的类中过滤出“popup_where”,并将其存储为openerTarget。然后将显示class=popup和openerTarget的任何内容

$('.opener').click(function() {
  var openerTarget = this.className.match(/\bpopup_\w+\b/);
  $('.popup.' + openerTarget).hide();
}​);​

我倾向于认为,使用ID时,这种方式更有效:

<div id="popup1" class="opener">Click Me</div>
<div class="popup popup1">I'm usually hidden</div>
和JS:

$("div.opener").click(function() {
  $("div." + this.id).toggle();
});

这似乎是一个使用HTML5自定义数据属性的好例子

HTML:


我认为这更简洁,因为您不必使用reg ex解析元素的类。您可以向触发元素添加任意数量的其他类,并且触发器将导致哪些元素弹出仍然是显而易见的。

+1。为了获得更好的性能,请使用
popup
div的id(而不是类名)作为
opener
类名的一部分<代码>,
ID的问题是它们应该是唯一的。这意味着,举例来说,我不能为一个弹出窗口设置多个打开器。
div.popup { display: none; }
$("div.opener").click(function() {
  $("div." + this.id).toggle();
});
<div data-popup-trigger="popup1">Click me!</div>
<div class="popup1">Secret information no one will ever see! Muahaha!</div>
$('[data-popup-trigger]').click(function() {
  var popupClass = $(this).attr('data-popup-trigger');
  $('.' + popupClass).show();
});