2013-10-30 182 views
4

我使用拾色器從http://jscolor.com/使用動態輸入

jscolor.js我試圖將其連接到一些動態的投入,但無濟於事。就動態輸入而言,在頁面加載時輸入不存在,只有在用戶點擊某些輸入後纔可用。例如,我有一行數據,每行都有不同的背景顏色。這行數據使用ajax加載。在每行的末尾,有一個編輯按鈕。通過單擊編輯按鈕,它將顯示點擊行的輸入文本框。我想在用戶點擊輸入文本框時調用jscolor選擇器。我怎樣才能做到這一點?

感謝

回答

2

幫我

<script> 
$(document).on('click', '#myPickerId', function() { 
    var obj = $(this)[0]; 
    if (!obj.hasPicker) { 
     var picker = new jscolor.color(obj, {}); // 
     obj.hasPicker = true; 
     picker.showPicker(); 
    } 
});  
</script> 

在我的情況下,機械手控制是動態的,因爲它是內部Knockout.js「與」隱藏了,並重新創建選擇器時,它需要聲明。

+0

什麼'$點(本)[0]'?這不就是沒有任何收益而返回這個「這個」嗎? – Carcigenicate

+0

@Carcigenicate我認爲這是因爲'$(this)[0]'返回一個數組,'jscolor'需要實際的div元素。 – iled

+0

$(this)[0]獲取實際的DOM元素,而不是jQuery的元素。 – aizquier

4

我只是有這個問題,但幸運的是它很容易修復。你需要(重新)初始化jscolor你動態創建後您的輸入:

jscolor.init() 
+0

最簡單的解決方案,只是我們厭倦了在您生成輸入時調用它,因爲它可能會減慢速度。 –

+2

這不適用於我,我得到一個錯誤,說jscolor.init不是一個函數:/請詳細說明,如果有人知道現在如何工作,那麼我重置jscolor並再次加載腳本與Jquery ... window.jscolor =未定義; $ .getScript(「../ Scripts/jscolor.min.js」,function(){ }); – mathkid91

15

出於某種原因jscolor.init()對我沒有工作,看着我叫

jscolor的代碼。 installByClassName( 「jscolor」);

功能。

所以......

$(document).ready(function() { 
    jscolor.installByClassName("jscolor"); 
}); 

希望它可以幫助

+3

這對我來說也是如此。 –

+0

很好..謝謝 –

+0

非常感謝你 – Ali7091