簡體   English   中英

按鈕單擊傳遞參數以進行回調

[英]Button click pass argument to callback

我有此代碼,非常簡單,無法正常工作:

$(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) {
        }
    });
}

錯誤是“未定義的不是函數”錯誤,將NetworkMarketSearching('NETWORK')放在.on('click', ...

嘗試這個:

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

click方法不支持字符串參數,它需要事件對象參數。

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) {

並且在函數中,類型將被引用為

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');
    });
});

您確定函數在調用時就存在嗎?

嘗試簡單一點,使用此示例jquery網站( http://api.jquery.com/on/ ):

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

然后您傳遞一個參數,如果可行的話,您將移至您的代碼。

暫無
暫無

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

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