2013-05-12 37 views
0

我目前正在研究一个新的网站(音乐杂志),我需要使用一个非常方便的功能;我有一个大概的想法如何做,但不能让代码工作。jquery循环函数; hide div if

在审查部分,我想显示一个主CD审查和刚刚提到的侧边栏div中的标题的其他CD。现在我不想让主显示器CD同时在边栏中列出。我正在尝试编写一个jquery函数,只要它与主显示CD标题匹配,它就会从侧边栏隐藏标题。

我想这个想法是在这里创建一个if函数:if (main CD title) == (sidebar CD title)隐藏(包含CD标题的侧边栏);它必须自动遍历所有元素。

下面是受影响的代码示例:

HTML:

<div class="grid_12 alpha omega upper2" title="vil"> 
<div class="grid_8 upper alpha omega" id="vil"> 

grid_12是主要的CD和grid_8是侧边栏标题CD

jQuery的位:

if($('.grid_12').attr('title') == $('.grid_8').attr('title')) 
{ 
$('.grid_8').attr('title').hide(); 
} 

jquery代码是绝对错误的,但它只是想法,我想要做到这一点。

将所有唯一标识符放入数组的建议非常好。

感谢您的帮助提前。

Jacek

+1

听起来不错。那么问题是什么? – lifetimes 2013-05-12 22:58:46

+0

什么是您的(相关)HTML? – 2013-05-12 23:06:31

+0

获取边栏中的所有cd标题并添加到数组中。然后检查数组以查看主CD标题是否与每个标题匹配或验证,并忽略数组。你真的需要发布一些代码来帮助我们; html&企图js。 – Syon 2013-05-12 23:13:41

回答

0

你不能隐藏标题,这是没有意义的。您可以隐藏某个元素,或清除其标题。

因此改变那些中的任何一个,它会“工作”:

$('.grid_8').hide(); 

或者:

$('.grid_8').attr('title', ''); 

读你说了一遍,我想我明白你的目标。这样的代码将隐藏与类“grid_8”元素具有标题一样与类“grid_12”元素:

var titleToSearch = $('.grid_12').attr('title'); 
var matchingDiv = $('.grid_8[title="' + titleToSearch + '"]'); 
matchingDiv.hide(); 

Live test case

这假定您只有一个“grid_12”和几个“grid_8”元素。如果你有一个以上的,每个“grid_12”包含了几个“grid_8”,你想找到他们,与匹配的标题,这里是更新的代码:

var parentGrid12 = $(this).parents(".grid_12"); 
var titleToSearch = parentGrid12.attr("title"); 
var matchingDiv = parentGrid12.find(".grid_8[title='" + titleToSearch + "']"); 
matchingDiv.hide(); 

$(this)假设代码被作为事件执行“grid_12”内的某个元素的处理程序。 Updated fiddle

+0

我想''.removeAttr('title')'会更合适。虽然可能没有任何区别。 – JJJ 2013-05-13 07:47:47

+0

@Juhana看到[这里](http://stackoverflow.com/q/4217437/447356)。不确定我自己,现在就离开它。 – 2013-05-13 08:13:10

+0

$('。grid_8')。attr('title','');可能会更有意义;我无法真正使用$('。grid_8')。hide();因为这会隐藏所有该类的div,并且页面上有很多div;这个想法是只隐藏一个.grid_8 div,它包含一个给定的属性。 – Jack 2013-05-13 10:24:47