我有一个函数,当我向它传递一个可选参数时我需要运行它,但它的主要动作是由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: {}
})
});
}
答案 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();
注意:我不主张在全局命名空间中声明函数。您应该保持代码模块化并正确确定范围。