2014-05-14 125 views
0

我有這樣的代碼,很簡單,不工作:按鈕單擊傳遞參數回調

$(function() { 
    $(document).on('click', '#NetworkSearch', NetworkMarketSearching("NETWORK")); 
    $(document).on('click', '#MarketSearch', NetworkMarketSearching("MARKET")); 
    $(document).on('click', '#CableSearch', NetworkMarketSearching("CABLE")); 
}); 

你可以看到 - 我很簡單地使用.on(),使NetworkMarketSearching()火從一個點擊,這裏是功能。如果從控制檯調用該函數,它自己可以很好地工作。

function NetworkMarketSearching(types) { 
    var name, searchType; 
    if (types == 'NETWORK') { name = $('#NetworkName').val(); searchType = 0; } 
    else if (types == 'MARKET') { name = $('#MarketName').val(); searchType = 1; } 
    else if (types == 'CABLE') {name = $('#CableName').val();searchType = 2;} 
    $.ajax({ 
     type: 'POST', 
     url: '/Talent_/Common/NetworkMarketSearch', 
     dataType: 'json', 
     data: { 'name': name, 'searchType': searchType }, 
     success: function(data) { 
     } 
    }); 
} 

的錯誤「未定義不是一個函數」它的.on('click', ...

+0

您的意思是隻有當您點擊id = NetworkSearch的DOM元素時纔會出現錯誤。 – Ishita

回答

1

的放線NetworkMarketSearching('NETWORK')時反覆發生試試這個:

$(function() { 
    $(document).on('click', '#NetworkSearch', function() { NetworkMarketSearching("NETWORK"); }); 
    $(document).on('click', '#MarketSearch', function() { NetworkMarketSearching("MARKET"); }); 
    $(document).on('click', '#CableSearch', function() { NetworkMarketSearching("CABLE"); }); 
}); 

Click方法doessnt支持字符串參數它期望事件對象參數。

+2

您應該解釋爲什麼OP正在調用該函數並將其返回結果(未定義)指定爲回調。 –

+0

我不完全明白你想說什麼 - 它確實工作,雖然 –

+0

更多的信息看看這個:http://javascript.info/tutorial/obtaining-event-object –

-1

您確定該功能在您打電話時存在嗎?

儘量走簡單,使用jquery網站的這個樣本(http://api.jquery.com/on/):

function notify() { 
    alert("clicked"); 
} 
$("button").on("click", notify); 

那麼你傳遞一個參數,如果它的工作原理您移動到你的代碼。

+0

該函數確實存在,其他答案的工作,這是 - 正如我懷疑 - 與字符串參數 –

1

這個NetworkMarketSearching("NETWORK")立即調用該函數,並試圖將其返回結果(它是未定義的)指定爲回調。

可以使用data參數將信息傳遞給你的函數調用:

$(function() { 
    $(document).on('click', '#NetworkSearch', { types: 'NETWORK' }, NetworkMarketSearching); 
    $(document).on('click', '#MarketSearch', { types: 'MARKET' }, NetworkMarketSearching); 
    $(document).on('click', '#CableSearch', { types: 'CABLE' }, NetworkMarketSearching); 
}); 

然後函數的定義是:

function NetworkMarketSearching(event) { 

,並在函數中,該類型會被引用as

event.data.types 

這就是jQuery docs指定傳遞參數給回調,但它也可以通過內聯匿名函數完成。也就是說,像這樣:

$(function() { 
    $(document).on('click', '#NetworkSearch', function() { 
     NetworkMarketSearching('NETWORK'); 
    }); 
    $(document).on('click', '#MarketSearch', function() { 
     NetworkMarketSearching('MARKET'); 
    }); 
    $(document).on('click', '#CableSearch', function() { 
     NetworkMarketSearching('CABLE'); 
    }); 
}); 
+0

好的解釋,不能自己說。 –