簡體   English   中英

調用jQuery插件的內部函數? 還是如何忽略來自jQuery插件的回調調用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM