我有一个应该由ajax处理的按钮,它们应该被委托给它的容器:
jQuery('#container').on('click', 'a', function() {
if(jQuery(this).hasClass('myButton1') {
//handle
return false;
} else if(jQuery(this).hasClass('myButton2') {
//handle
return false;
}
})
所以我想改善这个:
jQuery('#container').on('click', 'a.sharedClass', function() {
if(jQuery(this).hasClass('myButton1') {
//handle
return false;
} else if(jQuery(this).hasClass('myButton2') {
//handle
return false;
}
})
你怎么想,它会改进我的代码IF:
答案 0 :(得分:1)
这是一个有趣的问题,我通常采用的方法是使用HTML5 data
属性。我会使用像data-actionFn = 'delete'
这样的数据属性。
<强> HTML 强>
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 强>
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:强> 这只是为了让您了解如何实现它。