簡體   English   中英

頁面加載后,Click事件僅觸發一次

[英]Click event only triggers once, after the page is loaded

我在jQuery中有一個click事件。 期望的行為是使函數每次單擊鏈接時都執行。 但是,實際的行為是頁面加載,然后一次又一次不執行該函數。 令人反感的代碼如下。 謝謝!

<!DOCTYPE html>
<head>
<meta charset="utf-8">

<style>
#sub {
position:fixed;
z-index:999;
margin-top:180px;
margin-left:200px;
display:none;}
</style>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<script>
function showdiv(divid) {
   $('.menu').hide();
   $('#'+divid).fadeToggle('slow');
};
$(document).ready(function(){
    $('a#opt1').click(showdiv('sub'));
    $('a#opt2').click(function(){$('.menu').hide();});
}); 
</script>
</head>
<body>
    <li><a id="opt1" href="#">Option1</a></li>
    <li><a id="opt2" href="#">Option2</a></li>
</ul>
<ul id="sub">
    <li><a href="#">Mission</a></li>
    <li><a href="#">Press</a></li>
</ul>

$('a#opt1').click(showdiv('sub')); 將立即運行函數showdiv ,將返回值設置為onclick (在這種情況下,什么也沒有,因此您的點擊處理程序似乎不起作用)。

您應該將其包裝在一個匿名函數中。

$('a#opt1').click(function() { showdiv('sub') });

您需要將該函數包裝在一個匿名函數中:

$('a#opt1').click(function() {
    showdiv('sub');
});

您應該將函數引用傳遞給.click 在您的情況下,您傳遞了函數的返回值而不是實際函數。 長話短說,您應該使用function(){}包裝它:

$('a#opt1').click(function(){
    showdiv('sub');
});

.click上的jQuery文檔實際上指出您必須傳遞一個函數,但在示例中傳遞的是undefined 這就是為什么它只執行一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM