Jquery基于函数参数绕过单击事件

时间:2013-11-21 23:56:02

标签: javascript php jquery ajax

我有一个函数,当我向它传递一个可选参数时我需要运行它,但它的主要动作是由click事件触发AJAX调用。我尝试过trigger()函数没有成功。处理这种情况的最佳方法是什么?

function call_stuff()
{
    $items = [];
    $(this).closest('tr').children().each(function () {
        $items.push($(this).text());
    });
    do_stuff($items);

}

function do_stuff(items) {

    if (typeof items === 'undefined') {
        //regular execution listen for click command
        // use $(this) for ajax data
    } else {
        //ignore click command, run ajax function.
        //use $items for ajax data

    }

    $(".tabs-parent li a, .tabs-child li a").click(function () {
        //the ajax call I need to run:
        $.ajax({
            data: {}
        })

    });


}

1 个答案:

答案 0 :(得分:1)

在我看来,依靠触发事件来按需执行某些逻辑是一个常见的设计错误。通过首先将行为封装在另一个函数中,您的设计将更清晰,更灵活,然后您可以随意调用。

function doSomething() {
    console.log('do something');
}

//adding the handler
$('#myEl').click(function () {
    doSomething();
});

//or without the adapter function it not necessary
$('#myEl').click(doSomething);

//calling at will
doSomething();

注意:我不主张在全局命名空间中声明函数。您应该保持代码模块化并正确确定范围。