如下所示,我将inputclass
回调中的变量传递给validate
回调。
是否可以在不使用全局变量的情况下这样做,因此在将jQuery插件应用于给定元素时它将是实例本地的?
$('#name').editable({
inputclass: function() {
globalVariable=this;
},
validate: function (value) {
console.log(globalVariable);
return 'pause';
}
});
答案 0 :(得分:1)
由于在inputclass()和validate()中指的是不同的元素,因此共享数据有点麻烦。我的想法也是使用data(),但是要将数据从inputclass()传递给validate(),你需要从inputclass()引用的输入向上移动dom,直到.ui-tooltip,查找元素validate()指的是通过id
$('#name').editable({
inputclass: function(e, f) {
$("a[aria-describedby=" + $(this).closest(".ui-tooltip").prop("id") + "]").data("shared", "somedata");
},
validate: function (value) {
console.log("validate", $(this).data("shared"));
return 'pause';
}
});
更新了jsfiddle以演示:
答案 1 :(得分:0)
我建议在这里使用数据属性来传递数据。
$('#name').editable({
inputclass: function() {
var value = 'some value';
$(this).data('input-value', value);
},
validate: function (value) {
var inputValue = $(this).data('input-value');
console.log(inputValue);
return 'pause';
}
});
只有在inputClass
validate
函数被调用时,此方法才有效
P.S:如果您只想传递this
,则完全没有必要,因为它将在两个函数中自动绑定。
答案 2 :(得分:0)
您需要在函数范围之外定义该变量: 试试这个:
var globalVariable;
$('#name').editable({
inputclass: function() {
globalVariable='your value';
},
validate: function (value) {
console.log(globalVariable);
return 'pause';
}
});