টেবিল সারিতে স্লাইডডাউন (বা প্রদর্শন) ফাংশন কীভাবে ব্যবহার করবেন?


214

আমি একটি টেবিলের সাথে একটি সারি যুক্ত করার চেষ্টা করছি এবং সেই সারি স্লাইডটি দেখতে পেলাম, তবে স্লাইডডাউন ফাংশনটি টেবিলের সারিটিতে একটি প্রদর্শন: ব্লক শৈলী যুক্ত করছে যা লেআউটটি মিস করে।

এই চারপাশে কাজ কিভাবে কোন ধারণা?

কোডটি এখানে:

$.get('/some_url', 
  { 'val1': id },

  function (data) {
    var row = $('#detailed_edit_row');
    row.hide();
    row.html(data);
    row.slideDown(1000);
  }
);

এটি একটি টেবিল হতে হবে? আমার মনে হয় টেবিলটি ছাড়া অনেক সহজ হোন।
মিঃচ্রিস্টার

fadeInএবং fadeOutটেবিলের সারিগুলিতে কাজ করুন এবং একটি দুর্দান্ত বিকল্প চাক্ষুষ প্রভাব তৈরি করুন (কেবল ফায়ারফক্সে পরীক্ষিত)
স্যাভেজ

উত্তর:


295

সারণী সারিগুলিতে অ্যানিমেশনগুলি সমর্থিত নয়।

চ্যাফার এবং সুইডেনবার্গের "লার্নিং জ্যাকুয়ারি" থেকে


সারণি সারিগুলি অ্যানিমেশনটিতে বিশেষ বাধা উপস্থাপন করে, যেহেতু ব্রাউজারগুলি তাদের দৃশ্যমান প্রদর্শন বৈশিষ্ট্যের জন্য বিভিন্ন মান (টেবিল-সারি এবং ব্লক) ব্যবহার করে। অ্যানিমেশন ছাড়াই .hide () এবং .show () পদ্ধতিগুলি সর্বদা সারণী সারিগুলির সাথে ব্যবহার করা নিরাপদ। JQuery সংস্করণ 1.1.3 হিসাবে, .fadeIn () এবং .fadeOut () পাশাপাশি ব্যবহার করা যেতে পারে।


আপনি আপনার টিডি বিষয়বস্তুগুলিকে একটি ডিভের মধ্যে আবদ্ধ করতে পারেন এবং এতে স্লাইডডাউন ব্যবহার করতে পারেন। অ্যানিমেশনটি অতিরিক্ত মার্কআপের জন্য মূল্যবান কিনা তা আপনাকে সিদ্ধান্ত নিতে হবে।


5
দুর্দান্ত কাজ! একটি অপ্রাপ্তবয়স্ক অন্য গোটাচা রয়েছে: আপনার কোনও ঘর প্যাডিং অ্যানিমেট করতে হবে any তবে এটি কোনও বড় বিষয়ও নয়।
অ্যাড্রিয়ান গ্রিগোর

11
আপনি এইভাবে প্যাডিং সঞ্চারিত করতে পারেন:$('tr').find('td').animate({padding: '0px'}, {duration: 200});
অ্যান্ড্রু

@ এমিলি: আপনি দয়া করে jQuery উত্সের নির্দিষ্ট লাইনগুলিতে নির্দেশ করতে পারেন? আমি আমার প্রকল্পের উত্স হ্যাক করতে প্রলুব্ধ করছি।
র্যান্ডমব্লু

7
সরাসরি উত্তর নয়, তবে আমি খুঁজে পেয়েছি যে বেশিরভাগ পরিস্থিতিতে ফেইডইন / ফিডআউট ব্যবহার করা প্রায় তত ভাল এবং এটি টেবিলের সারিগুলিতে ঠিক আছে বলে মনে হয়।
ফিল লাএনসা

@ ফিললানাসা প্রথমে আমি "নাহ, ভাল লাগবে না" এর মতো ছিলাম তবে তারপরে আমি চেষ্টা করে দেখলাম এটি সত্যিই ভাল লাগছিল! ভ্রমণের জন্য ধন্যবাদ!
কেন্টন ডি জং

157

আমি কেবল ট্রটিকে গতিশীলভাবে গুটিয়ে রাখি তারপরে স্লাইডআপ / স্লাইডডাউন সম্পূর্ণ হয়ে গেলে এটি সরিয়ে ফেলুন। এটি একটি বেশ ছোট ওভারহেড যুক্ত এবং এক বা দুটি ট্যাগ মুছে ফেলা এবং তারপরে এনিমেশনটি সম্পূর্ণ হয়ে গেলে সেগুলি সরিয়ে ফেলার পরে, আমি এটি করার সময়ে কোনও দৃশ্যমান ল্যাগ দেখতে পাচ্ছি না।

স্লাইডআপ :

$('#my_table > tbody > tr.my_row')
 .find('td')
 .wrapInner('<div style="display: block;" />')
 .parent()
 .find('td > div')
 .slideUp(700, function(){

  $(this).parent().parent().remove();

 });

নিচে স্লাইড:

$('#my_table > tbody > tr.my_row')
 .find('td')
 .wrapInner('<div style="display: none;" />')
 .parent()
 .find('td > div')
 .slideDown(700, function(){

  var $set = $(this);
  $set.replaceWith($set.contents());

 });

চিলেস সাথী, আমি যখন তার প্লাগইনটি নিয়েছিলাম এবং এটি উপরের দিকে ফিরিয়ে দিয়েছিলে আমাকে fletchzone.com তে শ্রদ্ধা জানাতে হবে।


ধন্যবাদ! এটি কোনওভাবে আমার জন্য কাজ করেছে: সারি.ফাইন্ড ('টিডি') w td> div ') sl
পাওলোয়

কেবল সমস্যাটি হ'ল কোষগুলির মধ্যে কিছুটা বিলম্ব।
আর্কিমিডিস ট্রাজানো

41

এখানে আমি একটি প্লাগ-ইন লিখেছি যা এটি লিখেছিলাম, এটি ফ্লেচের বাস্তবায়ন থেকে খানিকটা সময় নেয় তবে আমার এককভাবে একটি সারি উপরে বা নীচে স্লাইড করতে ব্যবহৃত হয় (কোনও সারি প্রবেশ করানো হয় না)।

(function($) {
var sR = {
    defaults: {
        slideSpeed: 400,
        easing: false,
        callback: false     
    },
    thisCallArgs: {
        slideSpeed: 400,
        easing: false,
        callback: false
    },
    methods: {
        up: function (arg1,arg2,arg3) {
            if(typeof arg1 == 'object') {
                for(p in arg1) {
                    sR.thisCallArgs.eval(p) = arg1[p];
                }
            }else if(typeof arg1 != 'undefined' && (typeof arg1 == 'number' || arg1 == 'slow' || arg1 == 'fast')) {
                sR.thisCallArgs.slideSpeed = arg1;
            }else{
                sR.thisCallArgs.slideSpeed = sR.defaults.slideSpeed;
            }

            if(typeof arg2 == 'string'){
                sR.thisCallArgs.easing = arg2;
            }else if(typeof arg2 == 'function'){
                sR.thisCallArgs.callback = arg2;
            }else if(typeof arg2 == 'undefined') {
                sR.thisCallArgs.easing = sR.defaults.easing;    
            }
            if(typeof arg3 == 'function') {
                sR.thisCallArgs.callback = arg3;
            }else if(typeof arg3 == 'undefined' && typeof arg2 != 'function'){
                sR.thisCallArgs.callback = sR.defaults.callback;    
            }
            var $cells = $(this).find('td');
            $cells.wrapInner('<div class="slideRowUp" />');
            var currentPadding = $cells.css('padding');
            $cellContentWrappers = $(this).find('.slideRowUp');
            $cellContentWrappers.slideUp(sR.thisCallArgs.slideSpeed,sR.thisCallArgs.easing).parent().animate({
                                                                                                                paddingTop: '0px',
                                                                                                                paddingBottom: '0px'},{
                                                                                                                complete: function () {
                                                                                                                    $(this).children('.slideRowUp').replaceWith($(this).children('.slideRowUp').contents());
                                                                                                                    $(this).parent().css({'display':'none'});
                                                                                                                    $(this).css({'padding': currentPadding});
                                                                                                                }});
            var wait = setInterval(function () {
                if($cellContentWrappers.is(':animated') === false) {
                    clearInterval(wait);
                    if(typeof sR.thisCallArgs.callback == 'function') {
                        sR.thisCallArgs.callback.call(this);
                    }
                }
            }, 100);                                                                                                    
            return $(this);
        },
        down: function (arg1,arg2,arg3) {
            if(typeof arg1 == 'object') {
                for(p in arg1) {
                    sR.thisCallArgs.eval(p) = arg1[p];
                }
            }else if(typeof arg1 != 'undefined' && (typeof arg1 == 'number' || arg1 == 'slow' || arg1 == 'fast')) {
                sR.thisCallArgs.slideSpeed = arg1;
            }else{
                sR.thisCallArgs.slideSpeed = sR.defaults.slideSpeed;
            }

            if(typeof arg2 == 'string'){
                sR.thisCallArgs.easing = arg2;
            }else if(typeof arg2 == 'function'){
                sR.thisCallArgs.callback = arg2;
            }else if(typeof arg2 == 'undefined') {
                sR.thisCallArgs.easing = sR.defaults.easing;    
            }
            if(typeof arg3 == 'function') {
                sR.thisCallArgs.callback = arg3;
            }else if(typeof arg3 == 'undefined' && typeof arg2 != 'function'){
                sR.thisCallArgs.callback = sR.defaults.callback;    
            }
            var $cells = $(this).find('td');
            $cells.wrapInner('<div class="slideRowDown" style="display:none;" />');
            $cellContentWrappers = $cells.find('.slideRowDown');
            $(this).show();
            $cellContentWrappers.slideDown(sR.thisCallArgs.slideSpeed, sR.thisCallArgs.easing, function() { $(this).replaceWith( $(this).contents()); });

            var wait = setInterval(function () {
                if($cellContentWrappers.is(':animated') === false) {
                    clearInterval(wait);
                    if(typeof sR.thisCallArgs.callback == 'function') {
                        sR.thisCallArgs.callback.call(this);
                    }
                }
            }, 100);
            return $(this);
        }
    }
};

$.fn.slideRow = function(method,arg1,arg2,arg3) {
    if(typeof method != 'undefined') {
        if(sR.methods[method]) {
            return sR.methods[method].apply(this, Array.prototype.slice.call(arguments,1));
        }
    }
};
})(jQuery);

প্রাথমিক ব্যবহার:

$('#row_id').slideRow('down');
$('#row_id').slideRow('up');

পৃথক যুক্তি হিসাবে স্লাইড বিকল্পগুলি পাস করুন:

$('#row_id').slideRow('down', 500); //slide speed
$('#row_id').slideRow('down', 500, function() { alert('Row available'); }); // slide speed and callback function
$('#row_id').slideRow('down', 500, 'linear', function() { alert('Row available'); }); slide speed, easing option and callback function
$('#row_id').slideRow('down', {slideSpeed: 500, easing: 'linear', callback: function() { alert('Row available');} }); //options passed as object

মূলত, স্লাইড ডাউন অ্যানিমেশনের জন্য, প্লাগ-ইন ডিআইভি-র কোষের বিষয়বস্তু মোড়ক করে, এনিমেট করে, তারপরে সরিয়ে দেয় এবং বিপরীতে স্লাইড আপের জন্য (সেল প্যাডিং থেকে মুক্তি পাওয়ার জন্য কিছু অতিরিক্ত পদক্ষেপ সহ)। এটি আপনাকে যে বস্তুটি বলেছিল সেটিকেও ফেরত দেয়, যাতে আপনি পদ্ধতিগুলি চেইন করতে পারেন:

$('#row_id').slideRow('down').css({'font-color':'#F00'}); //make the text in the row red

আশা করি এটি কাউকে সাহায্য করবে।


আমি যদি সারিগুলির একটি দল যুক্ত করতে / সরাতে চাই তবে কী হবে? আমার একটি মাস্টার / বিশদ কার্যকারিতা দেওয়া দরকার
Volatil3

কলব্যাক ফাংশনটি ততক্ষনে আমার জন্য গুলি চালাচ্ছে।
জাস্টিন

এটা ঠিক সহজ দেখাচ্ছে। যদিও দুর্দান্ত কাজ করে (যদিও কলব্যাক কার্যকারিতা পরীক্ষা করে নি)। একদিন আমি বিপরীত প্রকৌশলী করতে সক্ষম হতে যথেষ্ট jQuery জানতে পারি j

1
এফওয়াইআই: লক্ষ্য সারিটির সামগ্রী যদি অন্য টেবিল হয় তবে এটি ভেঙে যাচ্ছে বলে মনে হচ্ছে। আমার আর কিছু করার মতো সময় নেই তবে যা আমি পেয়েছি তা হ'ল এটি চাইল্ড টেবিলটি ধসে পড়ে, সমস্ত সারি গোপনে সেট করে, কিছু অদ্ভুত প্যাডিং যোগ করে এবং তারপরে আপনি স্লাইডআর কল করার পরে এই সারিগুলি পুনরায় প্রসারিত হবে না ( 'নিচে')।
ক্রিস পোর্টার

1
আমি স্লাইডআরও ('আপ') এবং তারপরে স্লাইডরও ('ডাউন') কল করার সময় চাইল্ড টেবিল সহ অন্যদের মতো মজার অভিনয় করার মতো একই সমস্যার মধ্যে পড়েছিলাম। আমি বুঝতে পেরেছি যে এটি কারণ ('td') পদ্ধতিটি প্লাগইনে দু'বার ব্যবহৃত হচ্ছে। আমি এটি বাচ্চাদের ('টিডি') এ পরিবর্তন করেছি এবং সমস্যাগুলি তত্ক্ষণাত্ দূর হয়ে গেল। তম কোষগুলির সমস্যাগুলির জন্য, কেবলমাত্র বাচ্চাদের উভয় দৃষ্টান্ত ('টিডি') বাচ্চাদের কাছে আপডেট করুন ('টিডি, থ')।
অরেগন জেফ 25'17

4

আপনি সারিটির বিষয়বস্তুগুলিকে একটিতে মুড়িয়ে <span>এবং আপনার নির্বাচক হতে চেষ্টা করতে পারেন $('#detailed_edit_row span');- কিছুটা হ্যাকিশ, তবে আমি কেবল এটি পরীক্ষা করেছি এবং এটি কার্যকর। আমি table-rowউপরের পরামর্শটিও চেষ্টা করেছি এবং দেখে মনে হচ্ছে এটি কার্যকর হয়নি।

আপডেট : আমি এই সমস্যাটি নিয়ে ঘুরে বেড়াচ্ছি, এবং সমস্ত ইঙ্গিত থেকে jQuery এর প্রয়োজন একটি বস্তু যা এটি ব্লক উপাদান হতে স্লাইডডাউন সম্পাদন করে object সুতরাং, কোন পাশা। আমি একটি টেবিলটি জঞ্জাল করতে সক্ষম হয়েছি যেখানে আমি একটি ঘরে স্লাইডডাউন ব্যবহার করেছি এবং এটি লেআউটটিকে মোটেই প্রভাব ফেলেনি, তাই আপনার কীভাবে সেট আপ করা হয়েছে তা সম্পর্কে আমি নিশ্চিত নই। আমার মনে হয় আপনার একমাত্র সমাধানটি টেবিলটিকে এমনভাবে রিফেক্টর করা উচিত যে এটি সেই ঘরের সাথে একটি ব্লক, বা কেবল .show();জঘন্য জিনিস with শুভকামনা।


1
আপনি টিআর এবং টিডি ট্যাগ প্রাণবন্ত করতে পারবেন না। আপনাকে অবশ্যই প্রতিটি টিডির বিষয়বস্তু একটি ডিভের সাথে আবৃত করতে হবে, তারপরে ডিভ অ্যানিমেট করবে, তারপরে টিআরটি আড়াল / প্রদর্শন করবে:<td><div style="display:block">contents</div></td>
অ্যান্ড্রু

4

সারিটির সামগ্রীগুলি এটির মতো নির্বাচন করুন:

$(row).contents().slideDown();

। কনটেন্টস () - পাঠ্য এবং মন্তব্য নোড সহ মিলিত উপাদানগুলির সেটগুলিতে প্রতিটি উপাদানের বাচ্চাদের পান।


আপনার পাশাপাশি কলামটিও নির্বাচন করতে হবে, এরকম কিছু $('tr > td').contents().slideDown()। কলামের সমস্ত কন্টেন্ট একটি ট্যাগে আবৃত আছে তা নিশ্চিত করুন, <td>Some text</td>কাজ করে না। এটি সহজ সমাধান।
ব্যবহারকারী2233706

3

এর উত্তর দেওয়ার ক্ষেত্রে আমি কিছুটা পিছনে আছি তবে আমি এটি করার একটি উপায় খুঁজে পেয়েছি :)

function eventinfo(id) {
    tr = document.getElementById("ei"+id);
    div = document.getElementById("d"+id);
    if (tr.style.display == "none") {
        tr.style.display="table-row";
        $(div).slideDown('fast');
    } else {
        $(div).slideUp('fast');
        setTimeout(function(){tr.style.display="none";}, 200);
    }
}

আমি সারণীতে ডেটা ট্যাগগুলির ভিতরে একটি ডিভ উপাদান রেখেছি। এটি দৃশ্যমান সেট করা হলে, দ্বি প্রসারিত হওয়ার সাথে সাথে পুরো সারিটি নীচে নেমে আসে। তারপরে আবার টেবিলের সারিটি আড়াল করার আগে এটিকে ব্যাক আপ করতে (তারপরে টাইমআউট যাতে আপনি প্রভাবটি দেখতে পান) বলুন :)

আশা করি এটি কাউকে সাহায্য করবে!


3

আমি লুকানো সারিগুলির সাথে একটি টেবিলটি ঝাঁকিয়েছি যা সারি ক্লিকে ভিউ এর বাইরে এবং স্লাইড হয়।


3

নেস্টেড টেবিল সহ একটি টেবিল সারি করুন:

<tr class='dummyRow' style='display: none;'>
    <td>
        <table style='display: none;'>All row content inside here</table>
    </td>
</tr>

করতে slideDown সারি:

$('.dummyRow').show().find("table").slideDown();

দ্রষ্টব্য: সারি এবং এটির সামগ্রী (এটি এখানে "table") উভয়ই অ্যানিমেশন শুরু হওয়ার আগে লুকিয়ে রাখা উচিত ।


করতে slideUp সারি:

$('.dummyRow').find("table").slideUp('normal', function(){$('.dummyRow').hide();});

দ্বিতীয় প্যারামিটার ( function()) একটি কলব্যাক।


সরল !!

নোট করুন যে স্লাইড আপ / ডাউন ফাংশনগুলির প্যারামিটার হিসাবে যুক্ত করা যেতে পারে এমন আরও কয়েকটি বিকল্প রয়েছে (সবচেয়ে সাধারণ সময়কাল 'slow'এবং এর 'fast')।


আপনি কি আসলে আপনার সামগ্রীটিকে আপনার সারিগুলির মধ্যে রেখেছিলেন বা এটি টাইপো ছিল?
ভিনসেন্ট

2

আমি সারিতে টিডি উপাদান ব্যবহার করে এটি প্রায় পেয়েছি:

$(ui.item).children("td").effect("highlight", { color: "#4ca456" }, 1000);

সারিটি অ্যানিমেটেড করা অদ্ভুত আচরণের কারণ হয়, বেশিরভাগই অ্যাসিঙ্ক অ্যানিমেশন সমস্যা।

উপরের কোডের জন্য, আমি এমন একটি সারি হাইলাইট করছি যা টেবিলের কাছে টেনে এনে টেনে নেমে আসে এবং আপডেটটি সফল হয়েছে highlight আশা করি এটি কাউকে সাহায্য করবে।


আমি পাচ্ছিeffect is not a function
শেভেজ

2

আমি এখানে সরবরাহিত ধারণাগুলি ব্যবহার করেছি এবং কিছু সমস্যার মুখোমুখি হয়েছি। আমি সেগুলি সব ঠিক করেছি এবং আমি ভাগ করতে চাই একটি মসৃণ ওয়ান-লাইনার আছে।

$('#row_to_slideup').find('> td').css({'height':'0px'}).wrapInner('<div style=\"display:block;\" />').parent().find('td > div').slideUp('slow', function() {$(this).parent().parent().remove();});

এটি টিডি এলিমেন্টে সিএসএস ব্যবহার করে। এটি উচ্চতা কমিয়ে 0 পিএক্স করে তোলে। এইভাবে প্রতিটি টিডি উপাদানগুলির অভ্যন্তরে সদ্য নির্মিত ডিভ-র‌্যাপারগুলির সামগ্রীর উচ্চতা।

স্লাইডআপ ধীরে চলছে। আপনি যদি এটি আরও ধীর করে তোলে তবে আপনি কিছু ভুল বুঝতে পারেন। শুরুতে একটি ছোট লাফ। এটি উল্লিখিত সিএসএস সেটিংয়ের কারণেই। তবে এই সেটিংস ছাড়াই সারিটি উচ্চতায় হ্রাস পাবে না। শুধুমাত্র এটির বিষয়বস্তু হবে।

শেষে টিআর এলিমেন্টটি সরানো হবে।

পুরো লাইনটিতে কেবল জিকুয়ারি রয়েছে এবং কোনও নেটিভ জাভাস্ক্রিপ্ট নেই।

আশা করি এটা সাহায্য করবে.

এখানে একটি উদাহরণ কোড:

    <html>
            <head>
                    <script src="https://code.jquery.com/jquery-3.2.0.min.js">               </script>
            </head>
            <body>
                    <table>
                            <thead>
                                    <tr>
                                            <th>header_column 1</th>
                                            <th>header column 2</th>
                                    </tr>
                            </thead>
                            <tbody>
                                    <tr id="row1"><td>row 1 left</td><td>row 1 right</td></tr>
                                    <tr id="row2"><td>row 2 left</td><td>row 2 right</td></tr>
                                    <tr id="row3"><td>row 3 left</td><td>row 3 right</td></tr>
                                    <tr id="row4"><td>row 4 left</td><td>row 4 right</td></tr>
                            </tbody>
                    </table>
                    <script>
    setTimeout(function() {
    $('#row2').find('> td').css({'height':'0px'}).wrapInner('<div style=\"display:block;\" />').parent().find('td > div').slideUp('slow',         function() {$(this).parent().parent().remove();});
    }, 2000);
                    </script>
            </body>
    </html>

এই পোস্টটি ঠিক দুই বছর পুরানো। আমি jquery সংস্করণ 3.2.0 সঙ্গে কাজ করেছি। আমি আজ কোডটি ক্রোম 73.0.3683.75 দিয়ে পরীক্ষা করেছি এবং এটি কার্যকর হয়েছে।
অন্ধকার

1

আমি পুরো টবিকে স্লাইড করতে চাই এবং বিবর্ণ এবং স্লাইড এফেক্টগুলির সমন্বয় করে আমি এই সমস্যাটি পরিচালনা করেছি।

আমি এটি 3 পর্যায়ে করেছি (আপনি নীচে বা উপরে সাইড করতে চান এমন ক্ষেত্রে দ্বিতীয় এবং তৃতীয় পদক্ষেপ প্রতিস্থাপন করা হবে)

  1. কাউকে উচ্চতা নির্ধারণ করা,
  2. সমস্ত td এবং th বিবর্ধমান,
  3. স্লাইডিং টবি।

স্লাইডআপের উদাহরণ:

tbody.css('height', tbody.css('height'));
tbody.find('td, th').fadeOut(200, function(){
    tbody.slideUp(300)
});

এটি কি কেবল একটি নির্দিষ্ট সারির পরিবর্তে পুরো টেবিলটিকে প্রভাবিত করে না?
শেভেজ

1

প্রস্তাবিত অন্যান্য সমস্ত সমাধানে আমার সমস্যা ছিল তবে মাখনের মতো মসৃণ এই সাধারণ জিনিসটি শেষ করেছিলাম।

আপনার এইচটিএমএল সেট আপ করুন:

<tr id=row1 style='height:0px'><td>
  <div id=div1 style='display:none'>
    Hidden row content goes here
  </div>
</td></tr>

তারপরে আপনার জাভাস্ক্রিপ্টটি সেট আপ করুন:

function toggleRow(rowid){
  var row = document.getElementById("row" + rowid)

  if(row.style.height == "0px"){
      $('#div' + rowid).slideDown('fast');
      row.style.height = "1px";   
  }else{
      $('#div' + rowid).slideUp('fast');
      row.style.height = "0px";   
  } 
}

মূলত, ভিতরে একটি ডিভ দিয়ে "অদৃশ্য" সারি 0px উচ্চ করুন।
ডিভিতে অ্যানিমেশনটি ব্যবহার করুন (সারি নয়) এবং তারপরে সারিটির উচ্চতা 1px এ সেট করুন।

আবার সারিটি আড়াল করতে ডিভের বিপরীতে অ্যানিমেশনটি ব্যবহার করুন এবং সারি উচ্চতা 0 পিক্সে সেট করুন।


1

ভিনির লেখা এবং ব্যবহার করা প্লাগইনটি আমার পছন্দ হয়েছে। স্লাইডিং সারি (টিআর / টিডি) এর ভিতরে সারণীগুলির ক্ষেত্রে, নীস্টযুক্ত টেবিলের সারিগুলি সর্বদা স্লাইড আপ হওয়ার পরেও লুকানো থাকে। তাই আমি নেস্টেড টেবিলের সারিগুলি গোপন না করতে প্লাগইনে একটি দ্রুত এবং সাধারণ হ্যাক করেছি। কেবল নিম্নলিখিত লাইনটি পরিবর্তন করুন

var $cells = $(this).find('td');

প্রতি

var $cells = $(this).find('> td');

যা কেবল তাত্ক্ষণিক টিডিকে নেস্টেড নয় finds আশা করি এটি কাউকে প্লাগইন ব্যবহার করে এবং নেস্টেড টেবিলগুলি সহায়তা করবে।


1

আমি # ভিনির পোস্টে একটি মন্তব্য যুক্ত করতে চাই তবে তার উত্তর নেই তাই উত্তর পোস্ট করতে হবে ...

আপনার প্লাগইন সহ একটি ত্রুটি পাওয়া গেছে - যখন আপনি কেবল কোনও আর্গুমেন্ট দিয়ে আর্গুমেন্টের সাথে পাস করেন তবে অন্য কোনও আর্গুমেন্ট পাস না করা হলে তারা ওভাররাইট হয়ে যায় below বন্ধ করার পরে সারিটি ধ্বংস করার জন্য আমি একটি বিকল্পও যুক্ত করেছি (কেবল আমার এটির প্রয়োজন ছিল!): $ ('# সারি_আইডি')। স্লাইডরও ('আপ', সত্য); // সারিটি ধ্বংস করে

(function ($) {
    var sR = {
        defaults: {
            slideSpeed: 400,
            easing: false,
            callback: false
        },
        thisCallArgs: {
            slideSpeed: 400,
            easing: false,
            callback: false,
            destroyAfterUp: false
        },
        methods: {
            up: function (arg1, arg2, arg3) {
                if (typeof arg2 == 'string') {
                    sR.thisCallArgs.easing = arg2;
                } else if (typeof arg2 == 'function') {
                    sR.thisCallArgs.callback = arg2;
                } else if (typeof arg2 == 'undefined') {
                    sR.thisCallArgs.easing = sR.defaults.easing;
                }
                if (typeof arg3 == 'function') {
                    sR.thisCallArgs.callback = arg3;
                } else if (typeof arg3 == 'undefined' && typeof arg2 != 'function') {
                    sR.thisCallArgs.callback = sR.defaults.callback;
                }
                if (typeof arg1 == 'object') {
                    for (p in arg1) {
                        sR.thisCallArgs[p] = arg1[p];
                    }
                } else if (typeof arg1 != 'undefined' && (typeof arg1 == 'number' || arg1 == 'slow' || arg1 == 'fast')) {
                    sR.thisCallArgs.slideSpeed = arg1;
                } else if (typeof arg1 != 'undefined' && (typeof arg1 == 'boolean')) {
                    sR.thisCallArgs.destroyAfterUp = arg1;
                } else {
                    sR.thisCallArgs.slideSpeed = sR.defaults.slideSpeed;
                }

                var $row = $(this);
                var $cells = $row.children('th, td');
                $cells.wrapInner('<div class="slideRowUp" />');
                var currentPadding = $cells.css('padding');
                $cellContentWrappers = $(this).find('.slideRowUp');
                $cellContentWrappers.slideUp(sR.thisCallArgs.slideSpeed, sR.thisCallArgs.easing).parent().animate({
                    paddingTop: '0px',
                    paddingBottom: '0px'
                }, {
                    complete: function () {
                        $(this).children('.slideRowUp').replaceWith($(this).children('.slideRowUp').contents());
                        $(this).parent().css({ 'display': 'none' });
                        $(this).css({ 'padding': currentPadding });
                    }
                });
                var wait = setInterval(function () {
                    if ($cellContentWrappers.is(':animated') === false) {
                        clearInterval(wait);
                        if (sR.thisCallArgs.destroyAfterUp)
                        {
                            $row.replaceWith('');
                        }
                        if (typeof sR.thisCallArgs.callback == 'function') {
                            sR.thisCallArgs.callback.call(this);
                        }
                    }
                }, 100);
                return $(this);
            },
            down: function (arg1, arg2, arg3) {

                if (typeof arg2 == 'string') {
                    sR.thisCallArgs.easing = arg2;
                } else if (typeof arg2 == 'function') {
                    sR.thisCallArgs.callback = arg2;
                } else if (typeof arg2 == 'undefined') {
                    sR.thisCallArgs.easing = sR.defaults.easing;
                }
                if (typeof arg3 == 'function') {
                    sR.thisCallArgs.callback = arg3;
                } else if (typeof arg3 == 'undefined' && typeof arg2 != 'function') {
                    sR.thisCallArgs.callback = sR.defaults.callback;
                }
                if (typeof arg1 == 'object') {
                    for (p in arg1) {
                        sR.thisCallArgs.eval(p) = arg1[p];
                    }
                } else if (typeof arg1 != 'undefined' && (typeof arg1 == 'number' || arg1 == 'slow' || arg1 == 'fast')) {
                    sR.thisCallArgs.slideSpeed = arg1;
                } else {
                    sR.thisCallArgs.slideSpeed = sR.defaults.slideSpeed;
                }

                var $cells = $(this).children('th, td');
                $cells.wrapInner('<div class="slideRowDown" style="display:none;" />');
                $cellContentWrappers = $cells.find('.slideRowDown');
                $(this).show();
                $cellContentWrappers.slideDown(sR.thisCallArgs.slideSpeed, sR.thisCallArgs.easing, function () { $(this).replaceWith($(this).contents()); });

                var wait = setInterval(function () {
                    if ($cellContentWrappers.is(':animated') === false) {
                        clearInterval(wait);
                        if (typeof sR.thisCallArgs.callback == 'function') {
                            sR.thisCallArgs.callback.call(this);
                        }
                    }
                }, 100);
                return $(this);
            }
        }
    };

    $.fn.slideRow = function (method, arg1, arg2, arg3) {
        if (typeof method != 'undefined') {
            if (sR.methods[method]) {
                return sR.methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
            }
        }
    };
})(jQuery);

উল্লেখ করতে ভুলে গেছি আমি বাচ্চাদের ও তম সংশোধনগুলিতেও যুক্ত করেছি
মার্ক বল

0

আপনার যদি একই সাথে সারণী সারণি স্লাইড ও ফিড করতে হয় তবে এগুলি ব্যবহার করে দেখুন:

jQuery.fn.prepareTableRowForSliding = function() {
    $tr = this;
    $tr.children('td').wrapInner('<div style="display: none;" />');
    return $tr;
};

jQuery.fn.slideFadeTableRow = function(speed, easing, callback) {
    $tr = this;
    if ($tr.is(':hidden')) {
        $tr.show().find('td > div').animate({opacity: 'toggle', height: 'toggle'}, speed, easing, callback);
    } else {
        $tr.find('td > div').animate({opacity: 'toggle', height: 'toggle'}, speed, easing, function(){
            $tr.hide();
            callback();
        });
    }
    return $tr;
};

$(document).ready(function(){
    $('tr.special').hide().prepareTableRowForSliding();
    $('a.toggle').toggle(function(){
        $button = $(this);
        $tr = $button.closest('tr.special'); //this will be specific to your situation
        $tr.slideFadeTableRow(300, 'swing', function(){
            $button.text('Hide table row');
        });
    }, function(){
        $button = $(this);
        $tr = $button.closest('tr.special'); //this will be specific to your situation
        $tr.slideFadeTableRow(300, 'swing', function(){
            $button.text('Display table row');
        });
});
});

0
function hideTr(tr) {
  tr.find('td').wrapInner('<div style="display: block;" />').parent().find('td > div').slideUp(50, function () {
    tr.hide();
    var $set = jQuery(this);
    $set.replaceWith($set.contents());
  });
}

function showTr(tr) {
  tr.show()
  tr.find('td').wrapInner('<div style="display: none;" />').parent().find('td > div').slideDown(50, function() {
    var $set = jQuery(this);
    $set.replaceWith($set.contents());
  });
}

আপনি এই পদ্ধতিগুলি ব্যবহার করতে পারেন:

jQuery("[data-toggle-tr-trigger]").click(function() {
  var $tr = jQuery(this).parents(trClass).nextUntil(trClass);
  if($tr.is(':hidden')) {
    showTr($tr);
  } else {
    hideTr($tr);
  }
});

0

আপনি যদি সারির মধ্যে টিডি সারণিতে সেট করেন তবে একই সাথে আপনি সারিটির উচ্চতাটি অ্যানিমেট করা শুরু না করে একই সাথে কোনও প্রদর্শন না করে

tbody tr{
    min-height: 50px;
}
tbody tr.ng-hide td{
    display: none;
}
tr.hide-line{
    -moz-transition: .4s linear all;
    -o-transition: .4s linear all;
    -webkit-transition: .4s linear all;
    transition: .4s linear all;
    height: 50px;
    overflow: hidden;

    &.ng-hide { //angularJs specific
        height: 0;
        min-height: 0;
    }
}

0

এই কোড কাজ করে!

<!DOCTYPE html>

<html lang="en">
    <head>
        <meta charset="utf-8" />
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
        <title></title>
        <script>
            function addRow() {
                $('.displaynone').show();
                $('.displaynone td')
                .wrapInner('<div class="innerDiv" style="height:0" />');
                $('div').animate({"height":"20px"});
            }
        </script>
        <style>
            .mycolumn{border: 1px solid black;}
            .displaynone{display: none;}
        </style>
    </head>
    <body>
        <table align="center" width="50%">
            <tr>
                <td class="mycolumn">Row 1</td>
            </tr>
            <tr>
                <td class="mycolumn">Row 2</td>
            </tr>
            <tr class="displaynone">
                <td class="mycolumn">Row 3</td>
            </tr>
            <tr>
                <td class="mycolumn">Row 4</td>
            </tr>
        </table>
        <br>
        <button onclick="addRow();">add</button>    
    </body>
</html>

0

http://jsfiddle.net/PvwfK/136/

<table cellspacing='0' cellpadding='0' class='table01' id='form_table' style='width:100%;'>
<tr>
    <td style='cursor:pointer; width:20%; text-align:left;' id='header'>
        <label style='cursor:pointer;'> <b id='header01'>▲ Customer Details</b>

        </label>
    </td>
</tr>
<tr>
    <td style='widtd:20%; text-align:left;'>
        <div id='content' class='content01'>
            <table cellspacing='0' cellpadding='0' id='form_table'>
                <tr>
                    <td>A/C ID</td>
                    <td>:</td>
                    <td>3000/A01</td>
                </tr>
                <tr>
                    <td>A/C ID</td>
                    <td>:</td>
                    <td>3000/A01</td>
                </tr>
                <tr>
                    <td>A/C ID</td>
                    <td>:</td>
                    <td>3000/A01</td>
                </tr>
            </table>
        </div>
    </td>
</tr>

$(function () {
$(".table01 td").on("click", function () {
    var $rows = $('.content01');
    if ($(".content01:first").is(":hidden")) {
        $("#header01").text("▲ Customer Details");
        $(".content01:first").slideDown();
    } else {
        $("#header01").text("▼ Customer Details");
        $(".content01:first").slideUp();
    }
});

});


এটি একটি টেবিলযুক্ত একটি ডিভি দেখায় ও লুকিয়ে রাখে। ওপি যেমন জিজ্ঞাসা করেছে তেমন কোনও সারণী সারি নয়।
shazbot

0

ভিনির দেওয়া প্লাগটি সত্যিই নিকটে, তবে আমি কয়েকটি ছোট সমস্যা খুঁজে পেয়েছি এবং ঠিক করেছি।

  1. এটি সারি বাচ্চাদের লুকিয়ে রাখা ছাড়াও লোভের সাথে টিডি উপাদানগুলিকে লক্ষ্য করে। এটি যদি একরকম হত তবে যদি সারিটি দেখানোর সময় সেই শিশুদের অনুসন্ধান করা হত। এটি কাছাকাছি আসার সময়, তারা সমস্ত তাদের উপরে "প্রদর্শন: কিছুই নয়" দিয়ে শেষ করে এগুলি লুকিয়ে রেখেছিল।
  2. এটি মোটেও শিশুদের উপাদানগুলিকে লক্ষ্য করে নি।
  3. প্রচুর সামগ্রী সহ সারণী কক্ষগুলির জন্য (প্রচুর সারি সহ নেস্টেড টেবিলের মতো), স্লাইডআর ('আপ') কল করা স্লাইডস্পিডের মান নির্বিশেষে প্যাডিং অ্যানিমেশনটি শেষ হওয়ার সাথে সাথে সারিটির দৃশ্যটি ভেঙে ফেলবে ' । আমি এটিকে ঠিক করেছি যাতে প্যাডিং অ্যানিমেশনটি মোড়কের উপরে স্লাইডআপ () পদ্ধতিটি না হওয়া পর্যন্ত ট্রিগার না করে।

    (function($){
        var sR = {
            defaults: {
                slideSpeed: 400
              , easing: false
              , callback: false
            }
          , thisCallArgs:{
                slideSpeed: 400
              , easing: false
              , callback: false
            }
          , methods:{
                up: function(arg1, arg2, arg3){
                    if(typeof arg1 == 'object'){
                        for(p in arg1){
                            sR.thisCallArgs.eval(p) = arg1[p];
                        }
                    }else if(typeof arg1 != 'undefined' && (typeof arg1 == 'number' || arg1 == 'slow' || arg1 == 'fast')){
                        sR.thisCallArgs.slideSpeed = arg1;
                    }else{
                        sR.thisCallArgs.slideSpeed = sR.defaults.slideSpeed;
                    }
    
                    if(typeof arg2 == 'string'){
                        sR.thisCallArgs.easing = arg2;
                    }else if(typeof arg2 == 'function'){
                        sR.thisCallArgs.callback = arg2;
                    }else if(typeof arg2 == 'undefined'){
                        sR.thisCallArgs.easing = sR.defaults.easing;    
                    }
                    if(typeof arg3 == 'function'){
                        sR.thisCallArgs.callback = arg3;
                    }else if(typeof arg3 == 'undefined' && typeof arg2 != 'function'){
                        sR.thisCallArgs.callback = sR.defaults.callback;    
                    }
                    var $cells = $(this).children('td, th');
                    $cells.wrapInner('<div class="slideRowUp" />');
                    var currentPadding = $cells.css('padding');
                    $cellContentWrappers = $(this).find('.slideRowUp');
                    $cellContentWrappers.slideUp(sR.thisCallArgs.slideSpeed, sR.thisCallArgs.easing, function(){
                        $(this).parent().animate({ paddingTop: '0px', paddingBottom: '0px' }, {
                            complete: function(){
                                $(this).children('.slideRowUp').replaceWith($(this).children('.slideRowUp').contents());
                                $(this).parent().css({ 'display': 'none' });
                                $(this).css({ 'padding': currentPadding });
                            }
                        });
                    });
                    var wait = setInterval(function(){
                        if($cellContentWrappers.is(':animated') === false){
                            clearInterval(wait);
                            if(typeof sR.thisCallArgs.callback == 'function'){
                                sR.thisCallArgs.callback.call(this);
                            }
                        }
                    }, 100);                                                                                                    
                    return $(this);
                }
              , down: function (arg1, arg2, arg3){
                    if(typeof arg1 == 'object'){
                        for(p in arg1){
                            sR.thisCallArgs.eval(p) = arg1[p];
                        }
                    }else if(typeof arg1 != 'undefined' && (typeof arg1 == 'number' || arg1 == 'slow' || arg1 == 'fast')){
                        sR.thisCallArgs.slideSpeed = arg1;
                    }else{
                        sR.thisCallArgs.slideSpeed = sR.defaults.slideSpeed;
                    }
    
                    if(typeof arg2 == 'string'){
                        sR.thisCallArgs.easing = arg2;
                    }else if(typeof arg2 == 'function'){
                        sR.thisCallArgs.callback = arg2;
                    }else if(typeof arg2 == 'undefined'){
                        sR.thisCallArgs.easing = sR.defaults.easing;    
                    }
                    if(typeof arg3 == 'function'){
                        sR.thisCallArgs.callback = arg3;
                    }else if(typeof arg3 == 'undefined' && typeof arg2 != 'function'){
                        sR.thisCallArgs.callback = sR.defaults.callback;    
                    }
                    var $cells = $(this).children('td, th');
                    $cells.wrapInner('<div class="slideRowDown" style="display:none;" />');
                    $cellContentWrappers = $cells.find('.slideRowDown');
                    $(this).show();
                    $cellContentWrappers.slideDown(sR.thisCallArgs.slideSpeed, sR.thisCallArgs.easing, function() { $(this).replaceWith( $(this).contents()); });
    
                    var wait = setInterval(function(){
                        if($cellContentWrappers.is(':animated') === false){
                            clearInterval(wait);
                            if(typeof sR.thisCallArgs.callback == 'function'){
                                sR.thisCallArgs.callback.call(this);
                            }
                        }
                    }, 100);
                    return $(this);
                }
            }
        };
    
        $.fn.slideRow = function(method, arg1, arg2, arg3){
            if(typeof method != 'undefined'){
                if(sR.methods[method]){
                    return sR.methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
                }
            }
        };
    })(jQuery);

@ সারকিট্রি, আপনার কাছে প্রস্তাব দেওয়ার জন্য নির্দিষ্ট কিছু ছিল নাকি আপনার সমালোচনা যথেষ্ট?
অরেগন জেফ

নিবন্ধ আমি আরও সহজ কিছু খুঁজছি টেবিলের সারিটি স্লাইড করতে কোডের 109 লাইন নেওয়া উচিত নয়।
সার্কিট্রি

@ সারকিট্রি, আপনি অনুকূলিতকরণের গতি নিয়ন্ত্রণ করতে, সহজ করতে এবং কলব্যাক করার ক্ষমতা সহ একটি প্লাগইন হিসাবে (এবং কেবল ব্যবহার-নির্দিষ্ট কোডের খারাপ অভ্যাসে জড়িত না) হিসাবে ব্যবহার করতে চান তবে এটি সহজ হয় না doesn't ভিত্তিতে। যেহেতু এটি এমন কিছু যা আপনি আপনার কোড লাইব্রেরিতে অন্তর্ভুক্ত করতে চান এবং যে কোনও প্রয়োগের জন্য ব্যবহার করতে পারেন যার জন্য টেবিল সারিগুলি প্রসারিত / সঙ্কুচিত হওয়া প্রয়োজন, আমি কেন নিশ্চিত নই কেন এটি কোডের 109 লাইন matters
অরেগন জেফ

0

দ্রুত / সহজ ফিক্স:

JQuery। টগল () ব্যবহার করুনসারিটি সারি বা অ্যাঙ্কর এর প্রদর্শন / আড়াল করতে ।

আপনি যে সারিগুলি লুকিয়ে রাখতে চান তা চিহ্নিত করার জন্য একটি ফাংশন লিখতে হবে তবে টগল আপনার সন্ধানকারী কার্যকারিতা তৈরি করে।


আমি মনে করি এটি ইতিমধ্যে এই উত্তরে প্রস্তাবিত হয়েছিল ...
DarkCygnus
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.