2012-01-13 56 views
0

一時間這是我在jQuery的第一次嘗試,我用一個基本的教程,我發現在這裏:http://papermashup.com/simple-jquery-showhide-div/#如何顯示/隱藏一個動態元素(格)在使用jQuery

這是我當前的代碼,以及如何jQuery的作品:http://jsfiddle.net/mZQsu/

正如你所看到的,當你點擊'+/-'時,它會打開全部4個表/ DIV。

如何修改此代碼以根據原始表打開相關的輔助表格/ div?

(請注意,次表從PHP和SQL數據動態地生成的)

感謝。

P.S我所有的代碼是在這裏http://jsfiddle.net/mZQsu/而不是堵塞這個問題頁面的:)如果你有一個ID標籤每個div的的

回答

1

DEMO fiddle

$('.toggler').click(function() { // had to differentiate the main togglers with a new class 
    var ind = $(this).parents('tr').index()-1; // could change 
    $(".slidingDiv").eq(ind).slideToggle(); 
}); 

$('.show_hide').click(function() { // this are the 'togglers' inside the big menus 
    $(this).parents(".slidingDiv").slideToggle(); 
}); 
+0

感謝您的小提琴答案這工作偉大的直接:) – Bernard 2012-01-13 02:43:00

+0

@Bernard很高興幫助!謝謝,快樂編碼。 – 2012-01-13 06:17:38

1

最好的解決辦法是。例如。

<div class="slidingDiv" id="ip_127_0_0_1"> 

,然後修改相當於鏈接做

$("#ip_127_0_0_1").slideToggle(); 

所以只是相關的div被擴大。

0

看到我更新的小提琴:http://jsfiddle.net/mZQsu/1/

您可以使用該行的索引,並切換隻使用jQuery indexeq其它表的匹配行

見relivant文檔在這裏:

+0

請注意,如果divs/rows的順序不匹配,這將無法正常工作! – gorootde 2012-01-13 00:23:02

+0

@k_wave問題的上下文暗示它們總是會是 – Petah 2012-01-13 00:24:15

+0

那麼我將如何能夠關閉隱藏div?總是似乎有一個開放.. – Bernard 2012-01-13 01:30:17

0

這應該工作:

$('.show_hide').click(function() { 
    $(this).parents(".slidingDiv").slideToggle(); 
}); 

由於slidingDiv類是show_hide鏈接的直接父,我可以用「父」,而不是「父母」。後者提供了更多的靈活性,因爲它遍歷所有尋找類的祖先。

0

這裏是一個修改後的代碼 - http://jsfiddle.net/mZQsu/3/

我加入演出,hide1,顯示-hide2,顯示-hide3,顯示-hide4。 然後點擊它分別打開slidingDiv1,slidingDiv2,slidingDiv3,slidingDiv4。

0

當您綁定到一個事件:你總是可以抓住該事件的目標,並引用它。

$('.show_hide').click(function(e) { 
    $(e.target).parent("div.slidingDiv").slideToggle(); 
}); 

.parent()是一個很好的開始,但.closest()也可能工作。這就是說,這是它的首選方法。

在附註中,如果您想要做相反的事情,您可以使用.not(e.target)以及除點擊將被調用的所有其他元素。

0

因爲你的HTML是PHP產生的,它不應該包括兩個+唯一ID的問題 - 鏈接和滑動div的,例如:

a href="#" class="show_hide" id="show_hide2" 

而且 DIV CLASS =「slidingDiv」 ID =「slidingDiv2」

然後在你點擊功能你要打開的div指數:

 

    $(.show_hide).click(function(){ 
    var $str = $(this).attr('id'); 
    var $index = $str.charAt($str.length-1); 
    }); 

現在你可以使用索引打開DIV:

 

    var divName = "#slidingDiv" + $index; 
    $(divName).slideToggle(); 

+0

我正在嘗試你的方法很快,但不能得到它的工作。你可以看看http://jsfiddle.net/rday89/YqMZj/,看看我做錯了什麼? – Bernard 2012-01-15 16:30:14