Jquery 如何调用名为模板中属性值的函数?

Jquery 如何调用名为模板中属性值的函数?,jquery,Jquery,我有一个表单,它有很多属性 其中一个是回调函数,它包含我要调用的回调函数的名称 <form id="placeOrder" method="post" class="ajax" popupclass="order-created" callback="orderCreated" action="url" > 我已经检查过了,但是函数的名称是预定义的,所以这不适合我 假设函数是全局函数,则它位于窗口中。所以你可以这样称呼它: window[callBackAsString]();

我有一个表单,它有很多属性

其中一个是回调函数,它包含我要调用的回调函数的名称

<form  id="placeOrder" method="post" class="ajax" popupclass="order-created"  callback="orderCreated" action="url" >

我已经检查过了,但是函数的名称是预定义的,所以这不适合我

假设函数是全局函数,则它位于
窗口中。所以你可以这样称呼它:

window[callBackAsString]();

如果attr中的字符串表示全局作用域函数的名称,则可以通过
window[callback]()调用它

虽然我不会像您计划的那样使用自定义属性,但如果我按照您的建议执行,它看起来会是:

var orderCreated = function()
    {
      $( '#basketquantity' ).html( '0' );
      $( '#placeOrderButton' ).disableButton();
    },
    popupHandler = function( sender )
    {
      var $sender = $( sender ),
          $pageContent = $( '#pageContent' ),
          popupclass = $sender.attr( 'popupclass' ),
          callback = $sender.attr( 'callback' );

      if( typeof popupclass === 'undefined' )
      {
        $pageContent.clickPopup( 'saved' );
      }
      else
      {
        if( typeof callback !== 'undefined' && typeof window[callback] === 'function' )
        {
          window[callback]();
        }

        $pageContent.clickPopup( popupclass );
      }
    };

问题是,如果我调用不同的回调,会发生什么?我能用这个吗?窗口[回调]();好的,我查一下。你能告诉我,为什么在函数名之前使用var?它看起来像一个Jquery插件。函数语句,如
function foo(){}
在运行时由JavaScript的提升机制进行修改,例如将它们分解为一个var声明(
var foo;
-移动到范围的顶部)和一个函数定义的赋值(
foo=function(){};
)移动到var声明的正下方。通过避免函数语句并显式声明我的变量并将函数分配给它们,我避免了提升可能导致的陷阱。window.orderCreated=function(){$('#basketquantity').html('0');$('#placeOrderButton')。disableButton();}我需要像这样定义orderCreated函数,然后它与您的代码一起工作:)是的,这一切都取决于回调函数的作用域是窗口。我无法知道您发布的代码在哪里运行,也无法知道它最终会在什么范围内运行。很高兴你解决了。嘿,我没有别的办法和你沟通。去删除你最近的答案。这是目前为止唯一正确的答案。看看这些。。和在代码中,这没什么大不了的
var orderCreated = function()
    {
      $( '#basketquantity' ).html( '0' );
      $( '#placeOrderButton' ).disableButton();
    },
    popupHandler = function( sender )
    {
      var $sender = $( sender ),
          $pageContent = $( '#pageContent' ),
          popupclass = $sender.attr( 'popupclass' ),
          callback = $sender.attr( 'callback' );

      if( typeof popupclass === 'undefined' )
      {
        $pageContent.clickPopup( 'saved' );
      }
      else
      {
        if( typeof callback !== 'undefined' && typeof window[callback] === 'function' )
        {
          window[callback]();
        }

        $pageContent.clickPopup( popupclass );
      }
    };