声明无法显示或隐藏元素

时间:2014-06-04 17:52:32

标签: javascript jquery show-hide

所以我有这个用于隐藏类别(div class = category)的JS脚本:

http://jsfiddle.net/QN9cb/1/

脚本应该像这样工作 - 访问www.example.com的访问者看不到类别,但链接www.example.com/?access=beta的访问者可以看到“Beta”类别。

我使用jQuery .show()和.hide()来显示和隐藏div类别但是类别没有显示。已经好几天都无法解决这个问题,我的思绪被封锁了。有什么建议吗?

//this line of code hides category
$("*").find("[data-categoryname=Beta]").hide();

//this line of code shoud show category, but it isn't showing it
$("*").find("[data-categoryname="+grabAccess()+"]").show();

//see link above for full script

PS。脚本正在使用cookie,因此访问者不必每次都进入/?access = beta

PS2。测试脚本的唯一方法是下载它,因为你需要在URL中输入/?access = beta而你不能通过JSFiddle

1 个答案:

答案 0 :(得分:1)

我最好的猜测(没有设置代码的本地测试)是你的奇怪的选择器失败了。 find()方法在元素内部搜索,而不是通过先前选定元素的数组。如果有的话,您可以将filter()与当前代码一起使用。

而不是:

$("*").find("[data-categoryname=Beta]").hide();

我只是做

$("[data-categoryname=Beta]").hide();

或者,假设一个div元素:

$("div[data-categoryname=Beta]").hide();

选择器,就像你拥有它一样,搜索页面上每个元素的后代。这是一种非常低效的方法,可能会导致超时或其他问题。