2011-07-12 49 views
1

我是這個領域的絕對初學者。我寫了下面的代碼,但它不起作用。有人可以解釋錯誤在哪裏嗎?show()div問題

<script type="text/javascript"> 
    $("button").click(function(){ 
     $("div").show("slow"); 
    }); 
</script> 

<button>show</button> 
<div style="min-height:300px; min-width:400px; border:10px solid grey; display:none;"></div> 
<a href="http://#" style="display: none">this is a link</a> 
+1

它總是有幫助的說究竟發生了什麼。它是一個JavaScript錯誤?什麼是錯誤?按Ctrl + Shift + j在Firefox上查看。 – Jeremy

+0

也許它正在工作,但由於你的div是空的,你可能不會注意到它。 – Jules

+0

「不工作」是什麼意思?我們不知道您預期會發生什麼,並且我們無法從代碼中推斷出因爲代碼「無法正常工作」_。 –

回答

2

在按鈕出現之前執行jQuery。所以在執行jQuery的時候,按鈕不存在。

解決方法是使用$(document).ready(...)

頁面上的所有元素(HTML)都被解析爲該頁面的DOM。 DOM是所有元素的分層集合。您可以使用jQuery從中選擇元素。

但是,顯然DOM需要充分存在才能選擇元素。在你的情況下,你首先選擇按鈕,然後創建它。這是行不通的。在選擇器時,按鈕不存在。

使用jQuery的$(document).ready(),可以推遲包含選擇器的函數,直到DOM被完全加載和解析 - 此時選擇器工作,因爲元素在那裏。

<script type="text/javascript"> 
$(document).ready(function() { 

     $("button").click(function(){ 
      $("div").show("slow"); 
     }); 

}); 
     </script> 

     <button>show</button> 
     <div style= "min-height:300px; min-width:400px; border:10px solid grey; display:none;"></div> 
     <a href="http://#" style="display: none">this is a link</a> 
+0

非常感謝。問題解決了......你能告訴我一下如何準備好功能嗎..將會非常友善。 – anant

-1

你需要給你的元素 「ID」

這樣:

<button id="mybutton"></button> 

<div id="mydiv"></div> 

然後您將使用$( 「#myButton的」)或$(「#mydiv」)來調用這些代碼

+0

這不是這裏的問題。 anant忽略了domready函數,所以當javascript得到執行時沒有'button' - 所以不能連接點擊處理程序。 – oezi

0

您的代碼在butto之前運行n被創建,所以它不能綁定事件。

所以你需要把你的代碼放在document.ready事件中。在jQuery中,這由$(document).ready(handler)$(handler)處理。

文檔在http://api.jquery.com/ready/


修復你的代碼,使其工作

$(function(){ 
    $("button").click(function(){ 
     $("div").show("slow"); 
    }); 
}); 

演示在http://jsfiddle.net/gaby/vkrzt/

0

您可能試圖以監聽click事件按鈕存在之前。嘗試等待頁面內容加載:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("button").click(function(){ 
      $("div").show("slow"); 
     }); 
    }); 
</script> 

<button>show</button> 
<div style= "min-height:300px; min-width:400px; border:10px solid grey; display:none;"></div> 
<a href="http://#" style="display: none">this is a link</a> 
0

你可以從這裏小提琴的http://jsfiddle.net/bQUFE/代碼工作(當您單擊DIV所示)看到

如果你沒有這樣的結果經常檢查:

1)你在你的腳本之前加載jquery

2)總是使用$(document)。ready()像這樣:

$(document).ready(function(){ 
    $("button").click(function(){ 
     $("div").show("slow"); 
    }); 
}); 
0

javascript是在文檔加載之前執行的,所以點擊處理程序不能附加到按鈕上。要避免這種情況,換你的代碼這樣的domready中功能:

$(document).ready(function() { 
    $("button").click(function(){ 
     $("div").show("slow"); 
    }); 
} 
0

這可能是工作,但作爲您<div></div>是空的,你可能會注意到它。

此外,請確保您只在您的HTML添加div後運行您的JQuery腳本。

我也建議使用更好的標識符,因爲您最終可能在頁面上有多個div和按鈕。

例子:

<button id="btn1">Click me</button>  
<div id="hidden_div" style="display: none"> 
    Hello there! 
</div> 

<script type="text/javascript"> 
    $('button#btn1').click(function() { 
     $('div#hidden_div').show('slow'); 
    }); 
</script> 
+0

雖然你需要刪除那裏的sapce。 – pimvdb

+0

@ pimvdb對不起,你是對的。因爲我試圖太快,所以錯過了。 :-) – Jules