我有一系列的html内容称为从数据库中生成的过滤器。内容可以根据页面动态变化。我给每个主div分配了css ID,并在循环时附加了一个数字。下面是一个示例代码段:奇怪的jQuery行为,同时显示隐藏内容
<div><a id="filter-1">Brands</a></div>
<div id="filter-op-1">This is option 1</div>
<div><a id="filter-2">Size</a></div>
<div id="filter-op-2">This is option 2</div>
<div><a id="filter-3">Color</a></div>
<div id="filter-op-3">This is option 3</div>
的ID filter-1
和filter-op-1
等被循环的数量产生的,所以我们不知道如何在页面上太多的内容将为过滤器来生成。
我需要显示/隐藏通过a
点击过滤器-OP-X的内容,所以我写了下面的jQuery代码:
$(document).ready(function() {
$('div a').click(function() {
var self = $(this);
var cssId = self.attr('id');
var child = $('div#filter-op-'+cssId);
child.toggle();
});
});
现在的问题是,它不是以这种方式工作,但如果我在html中删除了js代码中的cssId
和-1
,-2
等,它开始工作,但它隐藏了所有内容,无论我点击了哪个a
。
我不明白是什么导致了这个问题。任何人都可以解释这个问题,并给出一些很好的建议,如何处理它?
感谢
看到它在这里工作。 https://jsfiddle.net/sandenay/uk1Lquuh/1/ –
'self.attr('id')'将会是'“filter-”'而不仅仅是'“”'部分;) –
Andreas
'控制台。日志(cssId);''会帮助你理解,对未来的错误也很好,可以测试变量 – turbopipp