提取并调用元素的onclick HTML属性中定义的JavaScript函数(使用jQuery attr / prop)

我有2个按钮A和B,我需要调用按钮B的onclick HTML属性中定义的function,但是单击按钮A.

此外,在这种情况下,我需要向该函数传递一个额外的参数。 按钮如下:

  

我想拨打电话:

 doSomething(p,q,r) // 3rd param to identify that it was clicked via button A 

按钮B实际上是一个可变按钮&动态获取p,q参数并且我需要传递第3个参数。

按钮B可以具有onClick属性

onClick= return doSomething(122,334) or return doSomething(abc,54)

或任何其他价值观。 我需要调用这样的函数

 doSomething(122,334,'btn_a') or doSomething(abc,54,'btn_a') 

如何使用jQuery / JS实现这一目标? 我能够使用.prop()调用该函数,但无法弄清楚传递额外的参数。

我能够像这样调用函数:

  jQuery('#btn_a').on('click',function(){ (jQuery('#btn_b').prop('onclick'))(); //this can invoke the function but how to pass the additional param? })  

提前致谢。 🙂

你可以这样做,即使用attr而不是prop来获取b的onclick的字符串值,然后用p,q,r替换字符串中的参数p,q ,然后使用Function构造函数创建一个匿名函数新体(更换后)。

 jQuery('#btn_a').on('click', function(){ var onclickB = jQuery('#btn_b').attr('onclick'), onclickA = Function(onclickB.replace("p,q", "p,q,r")); return onclickA(); }); 

注意 :你可以用这种方法做任何事情,只需创建一个正则表达式模式,用你想要的东西替换任何东西。

您需要使函数doSomething如下所示,为btn_b传递null并为btn_a传递值。 希望这可以帮助。

HTML

   

脚本

 $("#btn_a").on("click", function() { return doSomething(p,q,r); }); $("#btn_b").on("click", function() { return doSomething(p,q,null); }); function doSomething(p,q,r){ if(r != null){ //do something for btn_a and return } else { //do something for btn_b and return } } 

为简单起见,您可以设置一些想要作为参数传递给函数的全局变量/对象,然后调用该函数并使用全局变量/对象属性值。

你说的话 ;)

 /* with variables in global scope should be accessible inside function going to call */ param1 = 1; param2 = 2; /* function definition */ function functionCalling(){ /* use values here */ console.log(param1, param2); } ... functionCalling(); ... /* with variables in global scope should be accessible inside function going to call */ param = {property1:1, property2:2}; /* function definition */ function functionCalling(){ /* use values here of object */ console.log(param.property1, param.property1); } ... functionCalling(); ...