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

时间:2014-04-28 21:56:07

标签: jquery function call onchange

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

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

4 个答案:

答案 0 :(得分: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');

参考文献:

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

PS:为了完成起见,我建议您在event方法中提取on变量,并仅将相应的信息传递给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');

答案 2 :(得分:2)

执行此操作的最佳方法如下:

function myFunction(event)
{
   // code stuff here
}
...    
$(document).on('change', '.jq_pAc', myFunction);

这样,您可以自行决定调用您的函数,更改事件也会调用它。

答案 3 :(得分:0)

因此,在经过测试和更改事件几分钟后,我注意到它仅适用于输入元素。

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

我注意到的是,要使该功能真正生效,我需要将其应用于某种类型的onclick事件,并且两者需要相互欣赏。

我终于找到了一个更好的解决方案,其中包括Mutation Events。突变事件允许我的函数在被另一个函数触发时相应地运行。

我的最终解决方案。

if ($('.myCount').text() == "0"){$('.CartCount').hide();}

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

我找到了答案here..希望对您有帮助