2013-04-07 64 views
0

有一个div在加载时显示在页面上。我在这个div中添加了一个按钮,我希望当用户点击这个按钮时,它会使用JQuery隐藏div。使用JQuery隐藏div - 不工作

下面是HTML:

<div id="tabs" class="news1"> 
    <ul> 
    <li><a href="#tabs-1">Track</a></li> 
    <li><a href="#tabs-2">History</a></li> 
    </ul> 
    <div id="tabs-1"> 
    <table id="currentloc_table"> 
    <tr> 
    <th></th> 
    <th>Name</th> 
    <!--th>Latitude</th> 
    <th>Longitude</th--> 
    <th>Details</th> 
    </tr> 
      <tr><td></td></tr> 
    </table> 
    </div> 
    <div id="tabs-2"> 
    </div> 

    <button>hide</button> 

</div> 

这里是同一页上的代码的脚本:

<script> 
     $(function() { 
      $("#tabs").tabs(); 
     }); 

     $("button").click(function() { 
      $(this).parent().hide(); 
     }); 
</script> 

但由于某种原因,这是行不通的。有什么建议么?

谢谢。

+1

确保$(document).ready()中的脚本; – 2013-04-07 18:56:38

+1

它在这里工作http://jsfiddle.net/wQ3nn/ – Sachin 2013-04-07 18:59:31

+1

@Sachin无关。如果你在jsFiddle中使用'onLoad'模式,那么它本质上是一个模拟的'$(document).ready()'。试试[这一个](http://jsfiddle.net/wQ3nn/1/)。 – 2013-04-07 19:00:26

回答

3

您需要将您的.click绑定放入$(function(){})中。喜欢这个。

$(function() { 
     $("#tabs").tabs(); 
     $("button").click(function() { 
      $(this).parent().hide(); 
     }); 
    }); 

在jQuery的$(函数(){})是$(文件)。就绪的简写(函数(){})时加载的所有页面的HTML被调用。当你在这个准备好的调用之外放置一个绑定时,它会在加载HTML之前尝试绑定。如果HTML未加载,则不存在要绑定的元素,因此不会应用任何绑定!通过将它移入就绪(或准备好的短时间内)中,我们确保所有元素都已加载并能够正确绑定。

2

你只需把下面的代码:

$("button").click(function() { 
    $(this).parent().hide(); 
}); 

$(function() {}内,如:

$(function() { 

    // Call the jQuery tabs 
    $("#tabs").tabs(); 

    // Call button click event here 
    $("button").click(function() { 
     $(this).parent().hide(); 
    }); 
}); 

这将指定点击事件时执行的DOM完全加载。