首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >容器上的jQuery多重委托

容器上的jQuery多重委托
EN

Stack Overflow用户
提问于 2013-12-28 19:57:26
回答 1查看 39关注 0票数 0

我有一个按钮,它应该是ajax的助手,它们应该被委托到它的容器上:

代码语言:javascript
运行
复制
jQuery('#container').on('click', 'a', function() {
   if(jQuery(this).hasClass('myButton1') {
      //handle
     return false;
   } else if(jQuery(this).hasClass('myButton2') {
      //handle
      return false;
   }
})

所以我想要改进这个:

代码语言:javascript
运行
复制
jQuery('#container').on('click', 'a.sharedClass', function() {
   if(jQuery(this).hasClass('myButton1') {
      //handle
     return false;
   } else if(jQuery(this).hasClass('myButton2') {
      //handle
      return false;
   }
})

您认为,如果:

  1. 我有很多按钮:它是一个新闻流,每个新闻节点都有自己的按钮,如删除、喜爱、垃圾邮件、打开媒体灯盒、投票、查看投票等等。
  2. 还有其他的锚是不被ajax处理的。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-28 21:12:13

这是一个有趣的问题,我通常是如何使用HTML5 data属性来处理这个问题的。我会使用一个类似于so data-actionFn = 'delete'的数据属性。

代码语言:javascript
运行
复制
The two below trigger ajax calls onclick

<a href="#" data-actionFn='delete' class='js-ajax'> delete </a>
<a href="#" data-actionFn='vote' class='js-ajax'> vote </a>
....

This does not trigger an ajax call

<a href="#"> do something </a>

JAVASCRIPT

代码语言:javascript
运行
复制
jQuery('#container').on('click', 'a.js-ajax', function (e) {
    e.preventDefault();
    var actionFn = $(this).data('actionFn'); // grab function name

    if (window[actionFn]) {
        window[actionFn]();
    } else {
        // throw Error here
    }
});

function detele(){
    // put code here
}
function favorite(){
    // put code here
}
function spam(){
    // put code here
}
function open(){
    // put code here
}
function media(){
    // put code here
}
function lightbox(){
    // put code here
}
function vote(){
    // put code here
}
function view(){
    // put code here
}

NB:,这只是给您一个如何实现它的想法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20818749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档