2011-07-12 48 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