2017-06-13 50 views
0
$('#homeNavBar').on('click', onSiteLoad()); 

function onSiteLoad() { 
    $('#dataHolder').html(''); 
    userLoginMenu.html(''); 
    var h1 = $('<h1>').text('Welcome'); 
    var span = $('<span>').text('Welcome to our book library'); 
    dataHolder.append(h1).append(span); 
} 

我想直接在change函數中調用onSiteLoad()函數。JQuery on('click')直接調用函數,而不是在事件監聽器中定義它

它讓我做到這一點的唯一方法是這樣的:

$('#homeNavBar').on('click', function() { 
    $('#dataHolder').html(''); 
    userLoginMenu.html(''); 
    var h1 = $('<h1>').text('Welcome'); 
    var span = $('<span>').text('Welcome to our book library'); 
    dataHolder.append(h1).append(span); 
}); 

回答

4

你需要傳遞函數引用,截至目前要調用的功能通過其返回值的事件處理程序

$('#homeNavBar').on('click', onSiteLoad); 
            //^^^^ Parenthesis removed 
+0

確定它的工作,但我知道什麼時候有()你調用它結束了一下,否則你只是將它保存的價值 –

+0

@ВсеЕдно保存它的價值呢?當你添加括號時,你確實會調用它,沒有它,它只是對函數的引用。 – Ivar

0

你也可以在onClick中調用外部函數。

$('#homeNavBar').on('click', function() { 
    onSiteLoad(); 
});