在没有eval的情况下执行jquery方法

时间:2016-11-29 19:40:08

标签: javascript jquery

我在代码中重复了$("#id").addClass('disabled');$("#li-hzd").removeClass('disabled');的代码,用于多个函数中的多个ID。所以我试着写一些类似的通用例程,

function toggleClass(id,classname,action){
    $("#"+ id") +"." + classname+"("+action+") 
}

可以称为

toggleClass(id,'addClass','disabled');
toggleClass(id,'removeClass','disabled');

我相信可以使用eval()完成某些事情,但我也读过使用eval的不良做法。那么任何想法如何实现?

3 个答案:

答案 0 :(得分:2)

您还可以使用bracket notation获取jQuery方法。

function toggleClass(id, action, classname){
    $("#"+ id)[action](classname) 
}

toggleClass(id,'addClass','disabled');
toggleClass(id,'removeClass','disabled');

答案 1 :(得分:0)

您可以通过bracket notation [] 访问对象属性:

function toggleClass(id, classname, action) {
    $("#" + id)[classname](action) 
}

旁注:您似乎已将参数classnameaction命名为错误。应该反过来更有意义!函数名称应为action,类名应为classname。 : - )

答案 2 :(得分:0)

不使用addClass和removeClass,而是使用toggleClass,如果不存在则添加类名,否则将其删除

所以将你的toggleclass方法更改为以下

function toggleClass(id,classname){
    $("#"+ id).toggleClass(classname) 
}