मैं इस प्लगइन का उपयोग कर रहा हूं, tabelizer, इसका उपयोग करना बहुत आसान है, आप बस अपना निर्माण करें तालिका निर्दिष्ट के रूप में और दस्तावेज़ तैयार पर आप टेबललाइज़र कहते हैं:

मेरी jQuery:

$(document).ready(function(){
    tabilize();
});

मेरा कार्य:

function tabilize(){
    console.log("It's getting called");
    var table1 = $('#table1').tabelize({
        /*onRowClick : function(){
            alert('test');
        }*/
        fullRowClickable : false,
        onReady : function(){

        },
        onBeforeRowClick :  function(){

        },
        onAfterRowClick :  function(){

        },
    });
}

और मुझे वांछित परिणाम मिलता है,

लेकिन जब मैं अपनी तालिका को अजाक्स कॉल के साथ रीफ्रेश करता हूं:

success: function (response) {
       var resp = response.split('|');
        if (resp[0] == 'ok'){
                $('#table1').html(resp[1]).promise().done(function(){
                   tabilize();
                });
                return false;

मुझे पता है कि इसे फिर से बुलाया जा रहा है क्योंकि जब मैं अपना पेज लोड करता हूं, तो मुझे कंसोल लॉग मिलता है और जब मैं बटन पर क्लिक करता हूं तो मुझे कंसोल लॉग फिर से मिलता है।

मैं टेबल को वही जानता हूं जो नई पंक्ति है क्योंकि वही फ़ंक्शन टेबल बनाता है, अगर मैं अपने ब्राउज़र को रीफ्रेश करता हूं तो यह टैबलाइज्ड हो जाता है, लेकिन जब मैं रीफ्रेश टेबल बटन से कॉल करता हूं तो यह टैबलाइज्ड नहीं होता है।

मैंने देखा कि इसका कारण यह था कि आप केवल एक बार टेबेलिज़ को कॉल कर सकते हैं, अगर मैं इसे दस्तावेज़ तैयार पर नहीं कहता हूं, और मैं अपने रीफ्रेश टेबल बटन पर क्लिक करता हूं, तो तालिका तालिकाबद्ध हो जाती है, लेकिन अगर मैं इसे फिर से रीफ्रेश करता हूं, तो यह नहीं होता है सारणीबद्ध न हों, मुझे बस तालिका मिलती है।

तो, फिर से tabelize को कॉल करने में सक्षम होने के लिए मुझे क्या करने की आवश्यकता है?

0
Lauro182 19 अप्रैल 2017, 20:05
क्या आपने अधिक उपयुक्त प्लग-इन का उपयोग करने पर विचार किया है जो तालिका डेटा में परिवर्तनों को बेहतर ढंग से संभाल सकता है?
 – 
Mike Brant
19 अप्रैल 2017, 20:25
मैंने निश्चित रूप से नहीं किया है, लेकिन जब मैंने इसे देखा तो मुझे यह पसंद आया, इसका उपयोग करना बहुत आसान है, आपके पास कोई सुझाव है?
 – 
Lauro182
20 अप्रैल 2017, 02:02

2 जवाब

ठीक है, अगर कोई भी इसी समस्या में ठोकर खाता है, तो मैंने जो किया वह jquery.tabelizer.min.js को संशोधित किया और एक फ़ंक्शन जोड़ा जिसे मैंने रीटाबेलिज़ कहा, जो बस फिर से खुद में प्रवेश करता है और सार्वजनिक वस्तु देता है।

मुझे पता है कि प्लगइन द्वारा बनाई गई वस्तु के साथ इसका कुछ संबंध है, और एक बार इनिशियलाइज़ होने के बाद यह फिर से इनिट नहीं करता है, यह सिर्फ अपडेट होता है, इसलिए जब आप फिर से टैबलेट को कॉल करते हैं, तो यह खुद को फिर से इनिट नहीं करता है जो कि क्या है आप की जरूरत है।

प्लगइन अपने आप में बहुत छोटा है, इसलिए आप पढ़ सकते हैं कि यह क्या करता है।

मैंने स्क्रिप्ट में क्या जोड़ा:

e.fn.retabelize = function() {
    return n.caller = this,
    n.init(),
    n.updateData(),
    n.getPublicObj()
}

और मेरा टेबलिज़ फ़ंक्शन:

function tabilize(){

if (table1 == null || table1 == 'undefined'){
    table1 = $('#table1').tabelize({
    /*onRowClick : function(){
        alert('test');
    }*/
    fullRowClickable : false,
    onReady : function(){

    },
    onBeforeRowClick :  function(){

    },
    onAfterRowClick :  function(){

    },
});
}else{
    table1 = $('#table1').retabelize();
}
}
0
Lauro182 20 अप्रैल 2017, 03:10
$.fn.tabelize = function(confProp){
    var existingSelf = this.data('tabelizer');
    if (typeof existingSelf == 'undefined'){
        $.extend(self.conf, confProp);
        self.caller = this;
        self.init();

    }else{
        self = existingSelf;
        $.extend(self.conf, confProp);
        self.caller = this;
        self.init();
    }
    //Store copy of self in data for repeat calls, update it after any repeating call
    self.updateData();

    return self.getPublicObj()
};

मेरा टेबलिज़ फ़ंक्शन

function tabilize(){
            alert("table value"+table1);
            table1 = $('#table1').tabelize({
                /*onRowClick : function(){
                    alert('test');
                }*/
                fullRowClickable : true,
                onReady : function(){
                    console.log('ready');
                },
                onBeforeRowClick :  function(){
                    console.log('onBeforeRowClick');
                },
                onAfterRowClick :  function(){
                    console.log('onAfterRowClick');
                },
            });
    }

फिर दी गई विधि को किसी भी स्थान पर कॉल करें tabilize();

0
siddique 3 जिंदा 2018, 10:00
प्रिय, पियरे, तुम्हें क्या नहीं मिला?
 – 
siddique
3 जिंदा 2018, 13:12