#javascript #jquery #function #variables
#javascript #jquery #функция #переменные
Вопрос:
могу ли я создать переменную, которая является функцией этого типа:
jQuery.fn.appendValueToTextArea = function(txt){
return this.each(function(){
this.value = txt;
});
};
?
Я попытался поместить перед ней var
, но я получаю ошибку.
Комментарии:
1. запутался. вы хотите, чтобы var myfunction = function() {} или что-то еще?
2. Не могли бы вы уточнить свой вопрос? Вы пытались поставить
var
перед чем? Вы хотите создать переменную , которая является функцией какого типа? Ваш вопрос не имеет смысла.3. Ваш код, похоже, делает то, что вы пытаетесь сделать: jsfiddle.net/L8fSn
4. ну, функции jquery можно вызывать следующим образом:
element.appendValueToTextArea('sometext')
я хочу создать функцию, которая может вызываться подобным образом, но я хочу, чтобы функция была переменной, подобной той, которую Джон опубликовал выше5. Я также здесь, чтобы проголосовать за путаницу . Можете ли вы привести пример функции, которую вы бы описали как «переменную»?
Ответ №1:
Если вы хотите вызвать метод для элемента, как вы написали в комментарии, вам определенно нужно расширить jQuery.func
.
Может быть, вы просто хотите сохранить имя в переменной?
var name = 'appendValueToTextArea';
element[name]('text');
Единственный другой способ — сохранить ссылку на функцию и использовать .call()
или .apply()
:
var func = jQuery.fn.appendValueToTextArea = function(txt) {
// ...
};
func.call(element, 'text');
Или (поскольку я не уверен, чего вы действительно хотите) вы можете сначала присвоить функцию переменной, а затем присвоить ее jQuery.fn.appendValueToTextArea
:
var func = function(txt) {
// ...
};
jQuery.fn.appendValueToTextArea = func;
Ответ №2:
Что произойдет, если вы определите переменную после определения функции?
т. е.
jQuery.fn.appendValueToTextArea = function(txt){
return this.each(function(){
this.value = txt;
});
};
var fn = jQuery.fn.appendValueToTextArea;
Ответ №3:
jQuery.fn.appendValueToTextArea = function(txt){
return this.each(function(){
this.value = txt;
});
};
//This would put the function above in a variable.
//However, I'm not exactly sure what this gains you
var myfunction = jQuery.fn.appendValueToTextArea;