2009-01-04 28 views
0

我有一些類似這樣的標記:第一次使用jQuery,簡單的問題!

<p><a id="1" href="#">Link 1</a></p> 
<p id="1show" class="starthidden">Hi! I get shown when link 1 is clicked</p> 

<p><a id="2" href="#">Link 2</a></p> 
<p id="2show" class="starthidden">Hi! I get shown when link 2 is clicked</p> 

<p><a id="3" href="#">Link 3</a></p> 
<p id="3show" class="starthidden">Hi! I get shown when link 3 is clicked</p> 

而且一些JavaScript這樣的:

$(document).ready(function(){ 

    $("#maincontent a").click(function() { 
     var id = '#' + $(this).attr("id"); 
     var show = id + 'show'; 

     $("id").click(function() { 
      $("show").slideToggle("slow"); 
      return false; 
     }); 

     return false; 
    }); 

}); 

現在,標識和節目都是什麼,我期望在運行,但下一行沒有按」工作。我猜這是$(「id」)位 - 雖然將其更改爲$(id)也不起作用。

我該如何解決這個問題?

回答

4

首先,數字ID是無效的HTML。 ID屬性必須以a-z開頭。我建議像這樣改變你的HTML:

<p><a href="#msg1">Link 1</a></p> 
<p id="msg1" class="starthidden">Hi! I get shown when link 1 is clicked</p> 

<p><a href="#msg2">Link 2</a></p> 
<p id="msg2" class="starthidden">Hi! I get shown when link 2 is clicked</p> 

<p><a href="#msg3">Link 3</a></p> 
<p id="msg3" class="starthidden">Hi! I get shown when link 3 is clicked</p> 

這是既有效又清晰。在沒有javascript/css的設備上,它還會將焦點移至正確的位置。

然後,您可以簡單地拿起HREF關閉鏈接時點擊情況:

$(document).ready(function(){ 

    $("#maincontent a").click(function() { 

     var id = $(this).attr('href'); 
     $(id).slideToggle('slow'); 
     return false; 

    }); 

}); 
2

雙字符串中的變量不會被解析,因爲它們在PHP中,因此您必須執行$(show)。此外,內click()結合是不必要的 - 你可以運行slideToggle()

$(document).ready(function(){ 

    $("#maincontent a").click(function() { 
     var id = '#' + $(this).attr("id"); 
     var show = id + 'show'; 

     $(show).slideToggle("slow"); 

     return false; 
    }); 

}); 
+0

你打我給它一個更好的分析TenebrousX – 2009-01-04 12:26:19

+0

非常感謝! jQuery看起來非常棒! – 2009-01-04 12:26:33

0

好了,我沒有看到ID搜索Maincontent任何元素中列出的代碼。無論如何。我在代碼中看到這行代碼

$("id").click 

爲什麼雙引號要訪問變量?

2

你不需要ID!試試這個:

$(function(){ 
    $("a").click(function(){ 
     $(this).parents("p").slice(0,1).next("p").slideToggle("slow"); 
    }); 
});