jQuery সংযোজন ফেইডইন


97

অনুরূপ: ফাদাইন এবং সংযোজন ব্যবহার করা

তবে সেখানকার সমাধানগুলি আমার পক্ষে কার্যকর হচ্ছে না। আমি চেষ্টা করছি:

 $('#thumbnails').append('<li><img src="/photos/t/'+data.filename+'"/></li>').hide().fadeIn(2000);

তবে পুরো তালিকাটি একবারে ম্লান হয়ে যায়, প্রতিটি আইটেম যুক্ত করা হয় নি is দেখে মনে হচ্ছে hide()এবং fadeIn()এটি প্রয়োগ করা হচ্ছে $('#thumbnails')না <li>। পরিবর্তে আমি কীভাবে তাদের এটি প্রয়োগ করতে পারি? এটিও কাজ করে না:

$('#thumbnails').append('<li stle="display:none"><img src="/photos/t/'+data.filename+'"/></li>').filter(':last').fadeIn(2000);

অন্যান্য পরামর্শ?

উত্তর:


199

আপনার প্রথম প্রয়াস খুব নিকটে, তবে মনে রাখবেন যে append()এটি ফিরে আসছে #thumbnails, আপনি যে আইটেমটি এতে যুক্ত করেছেন তা নয়। পরিবর্তে, প্রথমে আপনার আইটেমটি তৈরি করুন এবং hide().fadeIn()এটি যুক্ত করার আগে প্রয়োগ করুন :

$('#thumbnails')
    .append($('<li><img src="/photos/t/'+data.filename+'"/></li>')
        .hide()
        .fadeIn(2000)
    );

এটি <li>সময়ের আগে নির্মাণে ডলারের ফাংশনটি ব্যবহার করে । আপনি এটি দুটি লাইনে লিখতেও পারেন, অবশ্যই যদি এটি আরও পরিষ্কার করে তোলে:

var item = $('<li><img src="/photos/t/'+data.filename+'"/></li>')
    .hide()
    .fadeIn(2000);
$('#thumbnails').append(item);

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

$('#thumbnails')
    .append('<li stle="display:none"><img src="/photos/t/'+data.filename+'"/></li>')
    .children(':last')
    .hide()
    .fadeIn(2000);

4
সুন্দর! পুরোপুরি কাজ করে। থাম্বনেইল খুব বেশি লোড হওয়া শেষ না হওয়া পর্যন্ত বিবর্ণতা শুরু করতে কীভাবে বিলম্ব করবেন তা আপনি জানতে পারছেন না?
এমপেন

আমার মাথার উপরের অংশটি বন্ধ নয়, তবে "কোনও চিত্র লোডিং শেষ হলে আমি কীভাবে কোনও ফাংশনটি ট্রিগার করব" পৃথক প্রশ্নের জন্য খারাপ ধারণা নয়। ;-)
বেন ফাঁকা

আমি জানি, আমি কেবল ভেবেছিলাম আপনি এত স্মার্ট আমরা একটি পাথর দিয়ে দুটি পাখি মেরে ফেলতে পারি: p ওহ ভাল, গুগল একটি সমাধান দিয়েছিল। আবার ধন্যবাদ :)
এমপেন

যদি এখনও আপনার কাছে লিঙ্কটি সহজ হয় তবে আমি কৌশলটি দেখতে পছন্দ করব।
বেন ফাঁকা

4
উদাহরণের জন্য ধন্যবাদ! এটি styleনয় stle :)
মিশ্রোট


30

বেন ব্ল্যাঙ্কের উত্তর ভাল তবে আমার কাছে বিবর্ণ, চটকদার। আপনি সংযোজন পরে ফেইড চেষ্টা করুন:

var item = $('<li><img src="/photos/t/'+data.filename+'"/></li>').hide();
$('#thumbnails').append(item);
item.fadeIn(2000);

4
আমি সম্পূর্ণরূপে একমত, এই পদ্ধতির ফলে এমন একটি ফ্রেম রেন্ডার এড়ানো যাবে যা ঝাঁকুনির কারণ হয়ে দাঁড়াবে ... আরও কিছুটা সূক্ষ্মভাবে
পল ক্যারল

ধন্যবাদ - এটি আমার জন্য একটি বিভ্রান্তি স্থির করেছে যেখানে একই আইটেম দুটি করার সময় যে আইটেমটি উপস্থিত হতে চলেছিল তার লেআউট / অবস্থানটি বেমানান।
ফ্রেস

3

চেষ্টা করে দেখুন!

 $('#thumbnails').append(<li> your content </li>);
 $('#thumbnails li:last').hide().fadeIn(2000);


0

আমি যে সমাধানটি দিয়েছিলাম তা এখানে:

function onComplete(event, queueID, fileObj, response, info) {
    var data = eval('(' + response + ')');
    if (data.success) {
        $('#file-' + queueID).fadeOut(1000);
        var img = new Image();
        $(img).load(function () { // wait for thumbnail to finish loading before fading in
            var item = $('<li id="thumb-' + data.photo_id + '"><a href="#" onclick="deletePhoto(' + data.photo_id + ')" class="delete" alt="Delete"></a><a href="#" class="edit" alt="Edit"></a><div class="thumb-corners"></div><img class="thumbnail" src="/photos/t/' + data.filename + '" width=150 height=150/></li>');
            $('#thumbnails').append(item.hide().fadeIn(2000));).attr('src', '/photos/t/' + data.filename);
        } else {
            $('#file-' + queueID).addClass('error');
            //alert('error ' + data.errno); // TODO: delete me
            $('#file-' + queueID + ' .progress').html('error ' + data.errno);
        }
    }
}

এটি আপলোডের সাথে কাজ করে । এটি loadচিত্রটির প্রদর্শিত হওয়ার আগেই লোডিং শেষ হওয়ার জন্য অপেক্ষা করতে jquery এর ইভেন্ট ব্যবহার করে। এটি সেরা পদ্ধতির কিনা তা নিশ্চিত নই, তবে এটি আমার পক্ষে কাজ করেছে।

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