2016-11-29 3 views
-1

У меня есть код $("#id").addClass('disabled'); и $("#li-hzd").removeClass('disabled'); в моем коде для нескольких идентификаторов в нескольких функциях. Так что я пытаюсь написать некоторое общее рутинное что-то подобное,Выполнение jquery методов без eval

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

который можно назвать что-то вроде,

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

Я считаю, что то, что может быть сделано с помощью Eval(), но я также читал, что это плохая практика использовать eval. Итак, любая идея, как это сделать?

ответ

2

Вы также можете получить методы jQuery, используя bracket notation.

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

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

Вы можете свойства объектов доступа через bracket notation[]:

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

Side Примечание: Вы, кажется, получили именование параметров classname и action неправильно. Вероятно, должно быть наоборот, чтобы иметь больше смысла! Имя функции должно быть action, а имя класса должно быть classname. :-)

0

Вместо использования addClass и removeClass, использование может просто использовать toggleClass, который добавляет имя класса, если нет еще удаляет его

так изменить метод toggleclass к следующему

function toggleClass(id,classname){ 
    $("#"+ id).toggleClass(classname) 
} 
Смежные вопросы