[英]Call an internal function of a jQuery plugin? Or how to ignore callback calls from a jQuery plugin?
是否可以調用jQuery插件的內部函數?
我需要調用顏色選擇器滑塊的updateColor函數,而不是它觸發的onchange回調。
我可以使用$('#colorpicker').trigger("colorpickersliders.updateColor",color)
但不會立即調用updateColor 。
如果我可以直接調用updateColor函數,則可以在調用之前取消設置onchange回調,並在之后進行重置:
$('#colorpicker').ColorPickerSliders(onchange:function(){}) // disable my *onchange* callback
// --- a trick to call updateColor immediately --- //
$('#colorpicker').ColorPickerSliders(onchange:MyNormalOnChangeCallback) // enable my *onchange* callback
我使用顏色選擇器滑塊 ,它是一個jQuery插件。 我將onchange回調函數設置為對更改作出反應。
問題是,當我想以編程方式更改顏色的值時,我想避免調用回調。
我可以有一個標志(甚至計數器)來忽略onchange回調的調用,但是我並不真的喜歡這種方法。
這是一個說明我問題的工具:
var solution1 = false; // set this to true for the dirty solution
var ignoreCounter = 0;
// the onchange callback
onchange = function(container, color) {
// I would like to print the color only if it was set manually by the user, not programatically
if(solution1 && ignoreCounter>0) // dirty solution: ignore the call if ignoreCounter is greater than 0
{
ignoreCounter--;
return;
}
console.log("color: " + color.tiny.toRgbString());
}
// initialize ColorPickerSliders
$('#colorpicker').ColorPickerSliders( { onchange: onchange, flat: true } )
// set the color programmatically
setInterval(function(){
ignoreCounter++; // ignore callback next time
$('#colorpicker').trigger("colorpickersliders.updateColor", "rgb(0,0,"+(Math.random()*255)+")");
}, 1000)
你會怎么做? 有沒有辦法修改jQuery插件?
當個人事件函數返回false時,將阻止事件的自然回調。
var onchange = function(container, color) {
if(solution1 && ignoreCounter>0),{
ignoreCounter--;
return false;
}
console.log("color: " + color.tiny.toRgbString());
return false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.