2010-04-11 4 views
2

Я использую плагин JQuery, который имеет свои функции, определенные в качестве таковых:JavaScript/JQuery короткие руки определения функции

$('#mydiv').pluginAction({ 
     someproperty: val, 
     format: 'mm hh', 
     labels: ['yes', 'no', 'maybe'], 
     labels1: ['never', 'always'] 
    }); 

В моей HTML страницы, у меня есть несколько DIVs, которые имеют те же свойства format, labels , labels1, но разные значения для someproperty. Есть ли какая-то нотация JavaScript, которую я могу использовать, чтобы сократить определение, чтобы у меня не было дублированного кода?

+1

Некоторые плагины позволяют отправлять литерал объекта для замены значений по умолчанию для плагина. Вы можете использовать это для вас значения, которые не меняются. –

ответ

6

Есть несколько способов борьбы с этим:

  1. Создайте функцию, которая заполняет пробелы; или

  2. Если плагин принадлежит вам, по умолчанию эти значения соответствуют желаемым.

Пример (1):

function props(val) { 
    return { 
    someproperty: val, 
    format: 'mm hh', 
    labels: ['yes', 'no', 'maybe'], 
    labels1: ['never', 'always'] 
    }; 
} 

$("#mydiv").pluginAction(props("...")); 
4

Клетуса имеет очень хороший ответ, который позволяет производить очень читаемый код. Это, вероятно, лучшее решение в вашем случае.

Как раз для записи, возможно, что-то вроде следующего. Вы можете создать литерал объекта, хранящий все фиксированные свойства, а затем просто указать дополнительные свойства (например, someProperty в вашем примере), когда необходимо, используя jQuery#extend.

var props = { 
format: 'mm hh', 
labels: ['yes', 'no', 'maybe'], 
labels1: ['never', 'always'] 
}; 

$('#mydiv').pluginAction($.extend(props, { someProperty: val })); 
+1

+1 для использования $ .extend –

1

Нет ничего плохого в дублировании такого кода. На самом деле это дает понять, какое поведение применяется в отношении данного div. Если, однако, вы говорите о сотнях дубликатов, используйте то, что предложили другие люди.

Смежные вопросы