2012-09-04 48 views
0

我想讓jQuery函數顯示/隱藏一些元素(現在是<li>);JQuery顯示/隱藏沒有硬編碼的編號

所以,我有這樣的代碼:

.sub { 
    display: none; 
} 

.... 

$(function show_sub(id) { 
    $('#'+id).show('fast'); 
}); 

..... 

<a href="" onmouseover="show_sub('id1')" onclick="return false;"> Here is it </a> 
<li id="id1" class="sub"> .... </li> 

在互聯網上,我只發現功能,我必須硬編碼元素的ID。

我知道我的jQuery函數是不正確的。

請幫幫我!

+0

使用$(「。sub」)。show(); – Praveen

+1

我的意思是,如果你只想隱藏那一個li元素,你將不得不以某種方式唯一地識別它。它當然不必使用ID。它可能是列表中的位置以及許多其他屬性。你將不得不提供更多關於它的信息來幫助更多。 – thatidiotguy

+0

你可以顯示一些你正在使用的HTML的樣本嗎? 'a'元素如何與'li'元素相關? –

回答

0

$("li.sub").show()顯示全部li的類sub

這就是你之後?

1

您需要獲取要顯示/隱藏的元素。 通過id獲取它是一種方式,但還有更多。

看看jquery selectors

例如,您可以顯示與 「子」 類元素:

$(".sub").show(); 
4

你可以清理了一下你的代碼做像這樣

的Html

<a href="#"> Here is it </a> 
<li class="sub"> .... </li> 

的Javascript

$(function() { 
    $('a[href="#"]') 
     .on('hover', function() { 
      $(this).next('li').show('fast'); // or toggle(); 
     }) 
     .on('click', function(ev) { 
      ev.preventDefault() 
     }) 
}); 

Doi因此您可以避免無用的標記,冗餘信息和內聯處理程序。

例小提琴:http://jsfiddle.net/GYye8/

+0

+1這個解決方案。 –

0

你可以試試下面

HTML代碼

<a href="#" class="li-toggler" data-toggle="id1">li toggler</a> 
<li id="id1">sometext</li>​ 

JS

$("a.li-toggler").click(function() { 
    $("#"+$(this).attr("data-toggle")).toggleClass("sub"); 
});