jQuery如何在不触发事件的情况下调用事件函数

3

我有一个如下所示的jQuery函数。我想在我的javascript中调用该函数,无论触发事件是否发生。换句话说,有时候我只是想调用下面的函数。这可行吗?

$(document).on('change', '.jq__pAC', function(event) {
  // some working code
}); // end .on('change')
4个回答

3

只需使用change();而不传递函数,此方法将触发动作而不是处理它:

$(document).on('change', '.jq__pAC', function(event) {
 // some working code
}).change();

或者,您可以使用trigger(),它会将传递给该方法的事件作为字符串触发:

$(document).on('change', '.jq__pAC', function(event) {
 // some working code
}).trigger('change');

参考资料:


谢谢@DavidThomas——有时候你只是花太多时间在代码中,迷失了自己。我需要一个新的视角。 - H. Ferrence

3
您可以将函数从on方法中分离出来,如下所示:
$(document).on('change', '.jq__pAC', handlerFunction);

function handlerFunction(event) {
  // some working code
}

// at some other point in your code you can call:
handlerFunction();

提示:仅为完成而言,我建议您在on方法内提取event变量并仅传递适当的信息给handlerFunction。像这样:

$(document).on('change', '.jq__pAC', function(event) {
    var nodename = event.target.nodeName;
    handlerFunction(nodename);
});

function handlerFunction(nodename) {
  // some working code
}

// at some other point in your code you can call:
handlerFunction('div');

谢谢@Steve -- 有时候你会在代码中花费太多时间而迷失其中。我需要一个新的视角。 - H. Ferrence

2
这个最好的做法如下所示:
function myFunction(event)
{
   // code stuff here
}
...    
$(document).on('change', '.jq_pAc', myFunction);

这样,您可以自行调用函数,并且它也会被change事件调用。

谢谢@BardMorgan——有时候你只是花太多时间在代码中,而且迷失了自己。我需要一个新的视角。 - H. Ferrence

0

所以在测试和玩弄更改事件几分钟后,我注意到这仅适用于输入元素。

$(document).on('change', '.myCart-val', function(){
   if ($('.myCart-val').html() == "0") {
     $('.myCart-val').hide();
   } else {
     $('.myCart-val').show();
   }
});

我注意到的是,为了让这个函数真正起作用,我需要将它应用于某种onclick事件,并且两者需要相互理解。
我终于找到了一个更好的解决方案,包括变异事件。当另一个函数触发时,变异事件允许我的函数按照预期运行。
我的最终解决方案。
if ($('.myCount').text() == "0"){$('.CartCount').hide();}

$('.myCart-val').on('DOMSubtreeModified', function() {
   if ($(this).text() == "0") {
     $(this).hide();
   } else {
     $(this).show();
   }    
});

我在这里找到了答案。希望对你有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接