按钮单击传递参数以进行回调

时间:2014-05-14 19:13:23

标签: javascript jquery

我有这个代码,很简单,不工作:

$(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', ...

行中时,错误是'未定义不是函数'会反复发生

3 个答案:

答案 0 :(得分:1)

试试这个:

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

click方法不支持string参数,它需要事件对象参数。

答案 1 :(得分: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) {

并且,在函数内,类型将被引用为

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

答案 2 :(得分:-1)

您确定该功能在您调用时是否存在?

尝试简单,使用此jquery站点示例(http://api.jquery.com/on/):

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

然后你传递一个参数,如果它有效,你就转移到你的代码。