উপাদানগুলিতে স্যুইচ করার জন্য কি কোনও দেশীয় jQuery ফাংশন রয়েছে?


174

আমি কী সহজেই jQuery এর সাথে দুটি উপাদান অদলবদল করতে পারি?

আমি যদি সম্ভব হয় তবে এক লাইনে এটি করার চেষ্টা করছি।

আমার একটি সিলেক্ট এলিমেন্ট রয়েছে এবং অপশনগুলি উপরে বা নীচে নেওয়ার জন্য আমার কাছে দুটি বোতাম রয়েছে এবং আমার কাছে ইতিমধ্যে নির্বাচিত এবং গন্তব্য নির্বাচকরা জায়গা করে নিয়েছে, আমি যদি এটি দিয়ে থাকি তবে আমি ভাবছিলাম যে আরও সহজ উপায় আছে কিনা if


আপনি মার্কআপ এবং কোড নমুনা পোস্ট করতে পারেন?
কনস্ট্যান্টিন তারকাস

এটি jQuery নয় তবে জাভাস্ক্রিপ্টের বিষয়: আপনি একক নির্দেশে DOM উপাদানগুলি অদলবদল করতে পারবেন না । তবে, [পাওলোর উত্তর] (# 698386) একটি দুর্দান্ত প্লাগইন;)
সেব

1
গুগল থেকে এখানে আসা লোকদের জন্য: লতিফের উত্তরগুলি দেখুন, খুব সহজ এবং আমার পক্ষে নিখুঁতভাবে কাজ করেছেন।
মরিস

1
@Maurice, আমি গৃহীত উত্তর পরিবর্তন করা
জুয়ান

1
একে অপরের পাশে থাকলে এটি কেবলমাত্র অদলবদল করে! দয়া করে গৃহীত উত্তরটি পরিবর্তন করুন।
সেরিহি

উত্তর:


233

আমি কেবল jQuery ব্যবহার করে এটি সমাধান করার একটি আকর্ষণীয় উপায় পেয়েছি:

$("#element1").before($("#element2"));

অথবা

$("#element1").after($("#element2"));

:)


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

12
আমি এই বিকল্পটি সবচেয়ে পছন্দ করি! সহজ এবং সুন্দর সামঞ্জস্যপূর্ণ। যাইহোক আমি পঠনযোগ্যতার জন্য el1.insertBefore (el2) এবং el1.insertAfter (el2) ব্যবহার করতে চাই।
মরিস

6
যদিও একটি বিভাজন .. (যা আমি অনুমান করি যে এই পৃষ্ঠার সমস্ত সমাধানের ক্ষেত্রে এটি প্রযোজ্য) যেহেতু আমরা এখানে ডিওএম চালনা করছি। আপনি যে উপাদানটি চালাচ্ছেন তার মধ্যে যদি কোনও আইফ্রেম উপস্থিত থাকে তখন অপসারণ এবং যোগ করা ভাল কাজ করে না। Iframe আবার লোড হবে। এছাড়াও এটি বর্তমানের পরিবর্তে এটির মূল url এ আবার লোড হবে। অত্যন্ত বিরক্তিকর তবে সুরক্ষা সম্পর্কিত। আমি এর কোনও সমাধান খুঁজে পাই নি
মরিস

202
দুটি উপাদান অবিলম্বে একে অপরের পাশে না থাকলে এটি দুটি উপাদানকে অদলবদল করে না।
বনিটি

12
এটি আর গ্রহণযোগ্য উত্তর হওয়া উচিত নয়। এটি সাধারণীকরণের ক্ষেত্রে কার্যকর হয় না।
thekingoftruth

79

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

এখানে সরল ডিওএম পদ্ধতি ব্যবহার করে একটি ক্লোনিং সংস্করণ রয়েছে (যেহেতু jQuery এর এই বিশেষ ক্রিয়াকলাপটিকে আরও সহজ করার জন্য কোনও বিশেষ কার্যকারিতা নেই):

function swapNodes(a, b) {
    var aparent = a.parentNode;
    var asibling = a.nextSibling === b ? a : a.nextSibling;
    b.parentNode.insertBefore(a, b);
    aparent.insertBefore(b, asibling);
}

2
docs.jquery.com/ ক্লোন - এটি "সত্য" পাস করা ইভেন্টগুলিকেও ক্লোন করে। আমি প্রথমে এটি ক্লোনিং না করে চেষ্টা করেছি তবে এটি বর্তমানে আপনার যা করছেন তা করছে: এটি দ্বিতীয়টি দিয়ে প্রথমটিকে অদলবদল করে এবং প্রথমটিকে যেমন আছে তেমন রেখে চলেছে।
পাওলো বার্গান্টিনো

যদি আমার কাছে <div id = "div1"> 1 </div> <div id = "div2"> 2 </div> থাকে এবং স্ব্যাপনডস (ডকুমেন্ট.জিটলেটমেন্টবাইআইডি ('ডিভ 1'), ডকুমেন্ট.জেটলেটমেন্টবাইআইডি ('ডিভি 2') কল হয় ); আমি <div id = "div1"> 1 </div> <div id = "div2"> 1 </div>
পাওলো বার্গান্টিনো

3
আহ, এমন এক কোণার কেস রয়েছে যেখানে একজনের পরবর্তী ভাইবোন নিজেই খ is উপরের স্নিপেটে স্থির। jQuery ঠিক একই জিনিস করছিল।
বোবিনস

আমার কাছে খুব অর্ডার-সংবেদনশীল তালিকা রয়েছে যা ইভেন্ট এবং আইডি ধরে রাখতে প্রয়োজন এবং এটি একটি কবজির মতো কাজ করে! ধন্যবাদ!
টেকিন

1
আমি মনে করি যেন এই প্রশ্নের শিরোনামটি প্রযুক্তিগতভাবে সন্তুষ্ট করার জন্য আপনার jQuery সংস্করণ যুক্ত করা উচিত। :)
thekingoftruth

70

না, নেই, তবে আপনি একটি বেত্রাঘাত করতে পারেন:

jQuery.fn.swapWith = function(to) {
    return this.each(function() {
        var copy_to = $(to).clone(true);
        var copy_from = $(this).clone(true);
        $(to).replaceWith(copy_from);
        $(this).replaceWith(copy_to);
    });
};

ব্যবহার:

$(selector1).swapWith(selector2);

এটি কেবলমাত্র লক্ষণীয়: নির্বাচকরা কেবলমাত্র প্রতিটি 1 টি উপাদানের সাথে মেলে, অন্যথায় এটি অদ্ভুত ফলাফল দিতে পারে Note


2
তাদের ক্লোন করা প্রয়োজন?
জুয়ান

সম্ভবত আপনি এইচটিএমএল () ব্যবহার করে সরাসরি লিখতে পারেন?
এড জেমস

2
@ এড উডকক যদি আপনি এটি করেন তবে আপনি যে উপাদানগুলির উপর আবদ্ধ ইভেন্টগুলি হারাবেন তা আমি নিশ্চিত।
অ্যালেক্স

2
ডিভগুলি একে অপরের পাশে না থাকলে দুর্দান্ত কাজ করে :)
এলমার

এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। যা জিজ্ঞাসা করা হয়েছিল তা সরবরাহ করার জন্য এটি jQuery প্রসারিত করে।
অ্যালিস ওয়ান্ডার

40

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

function swap(a, b) {
    a = $(a); b = $(b);
    var tmp = $('<span>').hide();
    a.before(tmp);
    b.before(a);
    tmp.replaceWith(b);
};

7
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। ক্লোনিং কোনও ইভেন্টের ট্রিগারগুলি সরিয়ে দেয় এবং এটি প্রয়োজনীয় নয়। আমি আমার কোডে এই সঠিক পদ্ধতিটি ব্যবহার করি।
thekingoftruth

1
এই আরও ভাল উত্তর! আমি আমার অদলবদল উপাদানগুলির একটি শিশু হিসাবে একটি উল পেয়ে খুশী, যা ছিল একটি জেকারি সাজানোর উপাদান। পাওলো বার্গান্টিনোর উত্তরের সাথে অদলবদল করার পরে তালিকাগুলি আর বাদ দেওয়া যায় না। ব্যবহারকারীর 2820356 এর উত্তরের সাথে এখনও সবকিছু ঠিকঠাক কাজ করেছে।
আগলদেব

20

এই উত্তরগুলির অনেকগুলি সাধারণ ক্ষেত্রে কেবল ভুল, অন্যরা বাস্তবে এমনকি যদি কাজ করে তবে অহেতুক জটিল। JQuery .beforeএবং .afterপদ্ধতিগুলি আপনি যা করতে চান তার বেশিরভাগই করে তবে অনেকগুলি অ্যালগরিদমগুলি যেভাবে কাজ করে সেভাবে আপনার একটি তৃতীয় উপাদান প্রয়োজন need এটি বেশ সহজ - আপনি চারপাশে জিনিসগুলি সরানোর সময় একটি স্থানধারক হিসাবে অস্থায়ী ডিওএম উপাদান তৈরি করুন। বাবা-মা বা ভাই-বোনের দিকে নজর দেওয়ার দরকার নেই এবং অবশ্যই ক্লোন করার দরকার নেই ...

$.fn.swapWith = function(that) {
  var $this = this;
  var $that = $(that);

  // create temporary placeholder
  var $temp = $("<div>");

  // 3-step swap
  $this.before($temp);
  $that.before($this);
  $temp.after($that).remove();

  return $this;
}

1) অস্থায়ী ডিভ tempআগে রাখুনthis

2) thisআগে সরানোthat

3) thatপরে সরানtemp

3 বি) অপসারণ temp

তারপর সহজভাবে

$(selectorA).swapWith(selectorB);

ডেমো: http://codepen.io/anon/pen/akYajE


2
এটি সর্বোত্তম উত্তর, অন্যান্য সমস্ত উপাদান উপাদান একে অপরের পাশে রয়েছে ume এটি প্রতিটি পরিস্থিতিতে কাজ করে।
ব্রাহর

11

আপনার দুটি ক্লোন প্রয়োজন হবে না, একটি করবে। আমাদের কাছে পাওলো বার্গান্টিনো উত্তর গ্রহণ করা:

jQuery.fn.swapWith = function(to) {
    return this.each(function() {
        var copy_to = $(to).clone(true);
        $(to).replaceWith(this);
        $(this).replaceWith(copy_to);
    });
};

দ্রুত হওয়া উচিত। দুটি উপাদানগুলির মধ্যে ক্ষুদ্রতর পাস করার ক্ষেত্রে জিনিসগুলি দ্রুত করা উচিত।


4
এটির সাথে এবং পাওলোর সমস্যাটি হ'ল তারা আইডি সহ উপাদানগুলিকে অদলবদল করতে পারে না কারণ আইডিগুলি অবশ্যই অনন্য হওয়া উচিত যাতে ক্লোনিং কাজ করে না। এই ক্ষেত্রে বোবিন্সের সমাধান কাজ করে।
রউড

আর একটি সমস্যা হ'ল এটি কপিরাইট থেকে ইভেন্টগুলি সরিয়ে ফেলবে।
জান উইলেম বি

8

আমি এর আগে একটি কৌশল ব্যবহার করেছি। আমি এটি http://mybackupbox.com এ সংযোগকারী তালিকার জন্য ব্যবহার করি

// clone element1 and put the clone before element2
$('element1').clone().before('element2').end();

// replace the original element1 with element2
// leaving the element1 clone in it's place
$('element1').replaceWith('element2');

এটি সেরা সমাধান ইমো তবে আপনি end()যদি শৃঙ্খলা চালিয়ে যাচ্ছেন না তবে প্রয়োজন নেই need কীভাবে$('element1').clone().before('element2').end().replaceWith('element2');
রোবসারব

1
শুধু খেয়াল clone()কোনো jQuery সংরক্ষণ করে না data(), যদি না আপনি উল্লেখ clone(true) - একটি গুরুত্বপূর্ণ পার্থক্য আপনি বাছাই করছি যাতে করে আপনি সব হারাবেন না আপনার ডেটা না
robisrob

3

আমি একটি ফাংশন তৈরি করেছি যা আপনাকে একাধিক নির্বাচিত বিকল্পগুলি উপরে বা নীচে স্থানান্তর করতে দেয়

$('#your_select_box').move_selected_options('down');
$('#your_select_boxt').move_selected_options('up');

নির্ভরতা:

$.fn.reverse = [].reverse;
function swapWith() (Paolo Bergantino)

প্রথমে এটি প্রথম / শেষ নির্বাচিত বিকল্পটি উপরে / নিচে যেতে সক্ষম কিনা তা পরীক্ষা করে। তারপরে এটি সমস্ত উপাদান এবং কলগুলির মধ্য দিয়ে লুপ করে

অদলবদল (এলিমেন্ট.নেক্সট () বা এলিমেন্ট.প্রিভ ())

jQuery.fn.move_selected_options = function(up_or_down) {
  if(up_or_down == 'up'){
      var first_can_move_up = $("#" + this.attr('id') + ' option:selected:first').prev().size();
      if(first_can_move_up){
          $.each($("#" + this.attr('id') + ' option:selected'), function(index, option){
              $(option).swapWith($(option).prev());
          });
      }
  } else {
      var last_can_move_down = $("#" + this.attr('id') + ' option:selected:last').next().size();
      if(last_can_move_down){
        $.each($("#" + this.attr('id') + ' option:selected').reverse(), function(index, option){
            $(option).swapWith($(option).next());
        });
      }
  }
  return $(this);
}

কোডটি কীভাবে লেখা হয়েছে এবং এটি কীভাবে সম্পাদন করবে তা উভয়ই এটি অদক্ষ।
ব্লেইস

এটি আমাদের অ্যাপের একটি প্রধান বৈশিষ্ট্য ছিল না এবং আমি এটি কেবলমাত্র স্বল্প পরিমাণে বিকল্পের সাথে ব্যবহার করি। আমি কেবল দ্রুত এবং সহজ কিছু চাইছিলাম ... আপনি যদি এটির উন্নতি করতে পারেন তবে আমি এটি পছন্দ করব! এটা দুর্দান্ত হবে!
টম ম্যাক্কেলবারে

3

ক্লোনিং ব্যতীত অন্য একটি:

অদলবদল করার জন্য আমার কাছে একটি আসল এবং নামমাত্র উপাদান রয়েছে:

            $nominal.before('<div />')
            $nb=$nominal.prev()
            $nominal.insertAfter($actual)
            $actual.insertAfter($nb)
            $nb.remove()

তারপরে insert <div> beforeএবং removeতারপরে কেবল তখনই প্রয়োজন হয়, যদি আপনি এটি নিশ্চিত না করতে পারেন যে সর্বদা একটি উপাদান রয়েছে (আমার ক্ষেত্রে এটি হয়)


অথবা আপনি কেবল .prev()তার দৈর্ঘ্য এবং যদি 0 হয় তবে এটি পরীক্ষা করতে পারেন.prepend() করার .parent():) এই ভাবে আপনি অতিরিক্ত উপাদান তৈরি করতে হবে না।
jave.web

2

jQuery প্লাগইন "পরিবর্তনযোগ্য" একবার দেখুন

http://code.google.com/p/jquery-swapable/

এটি "বাছাইযোগ্য" এ নির্মিত এবং এটি বাছাইযোগ্য (ড্র্যাগ-এন-ড্রপ, প্লেসহোল্ডার, ইত্যাদি) এর মতো দেখায় তবে কেবল দুটি উপাদানই অদলবদল: টেনে এনে ফেলে দেওয়া। অন্যান্য সমস্ত উপাদান প্রভাবিত হয় না এবং তাদের বর্তমান অবস্থানে থাকে।


2

এটি @ ফ্লাইটের উপর ভিত্তি করে একটি উত্তর উত্তর যুক্তির , তবে কিছুটা সাধারণীকরণ হয়েছে

যদি উপাদানগুলি সরানোর আগে / এর আগে / সংযোজন করা হয় তবে
=> কোনও ক্লোনিংয়ের প্রয়োজন নেই>>
ইভেন্টগুলি রাখা হয় না

দুটি ঘটনা ঘটতে পারে

  1. একটি টার্গেটের কিছু " .prev()আইওস" থাকে => আমরা অন্য লক্ষ্যটিকে .after()রাখতে পারি।
  2. একটি লক্ষ্য হ'ল এর প্রথম সন্তান .parent()=> আমরা .prepend()অন্য লক্ষ্যটি পিতামাতার কাছে করতে পারি ।

কোড

এই কোডটি আরও ছোট করা যেতে পারে তবে আমি পঠনযোগ্যতার জন্য এটিকে এভাবে রেখেছি। মনে রাখবেন যে পিতামাতাদের পূর্বনির্ধারিত করা (যদি প্রয়োজন হয়) এবং পূর্ববর্তী উপাদানগুলি বাধ্যতামূলক।

$(function(){
  var $one = $("#one");
  var $two = $("#two");
  
  var $onePrev = $one.prev(); 
  if( $onePrev.length < 1 ) var $oneParent = $one.parent();

  var $twoPrev = $two.prev();
  if( $twoPrev.length < 1 ) var $twoParent = $two.parent();
  
  if( $onePrev.length > 0 ) $onePrev.after( $two );
    else $oneParent.prepend( $two );
    
  if( $twoPrev.length > 0 ) $twoPrev.after( $one );
    else $twoParent.prepend( $one );

});

... একটি ক্রিয়াকলাপে অভ্যন্তরীণ কোড মোড়ানো নির্দ্বিধায় :)

উদাহরণ ফ্রিডલમાં ইভেন্ট সংরক্ষণের জন্য অতিরিক্ত ক্লিক ইভেন্টগুলি সংযুক্ত রয়েছে ...
উদাহরণস্বরূপ ফিডল: https://jsfiddle.net/ewroodqa/

... বিভিন্ন ক্ষেত্রে কাজ করবে - এমন একটি যেমন:

<div>
  <div id="one">ONE</div>
</div>
<div>Something in the middle</div>
<div>
  <div></div>
  <div id="two">TWO</div>
</div>

2

একাধিক বাচ্চাদের উপাদানগুলিকে পিতামাতার উপাদানের উপরে এবং নীচে সরানোর জন্য এটি আমার সমাধান। তালিকা বাক্সে নির্বাচিত বিকল্পগুলি সরানোর জন্য ভাল কাজ করে ( <select multiple></select>)

উপরে উঠানো:

$(parent).find("childrenSelector").each((idx, child) => {
    $(child).insertBefore($(child).prev().not("childrenSelector"));
});

নিচে যাও:

$($(parent).find("childrenSelector").get().reverse()).each((idx, child) => {
    $(opt).insertAfter($(child).next().not("childrenSelector"));
});


1

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

jQuery.fn.swapWith = function(target) {
    if (target.prev().is(this)) {
        target.insertBefore(this);
        return;
    }
    if (target.next().is(this)) {
        target.insertAfter(this);
        return
    }

    var this_to, this_to_obj,
        target_to, target_to_obj;

    if (target.prev().length == 0) {
        this_to = 'before';
        this_to_obj = target.next();
    }
    else {
        this_to = 'after';
        this_to_obj = target.prev();
    }
    if (jQuery(this).prev().length == 0) {
        target_to = 'before';
        target_to_obj = jQuery(this).next();
    }
    else {
        target_to = 'after';
        target_to_obj = jQuery(this).prev();
    }

    if (target_to == 'after') {
        target.insertAfter(target_to_obj);
    }
    else {
        target.insertBefore(target_to_obj);
    }
    if (this_to == 'after') {
        jQuery(this).insertAfter(this_to_obj);
    }
    else {
        jQuery(this).insertBefore(this_to_obj);
    }

    return this;
};

এটি একাধিক DOM উপাদানযুক্ত jQuery অবজেক্টগুলির সাথে ব্যবহার করা উচিত নয়


1

আপনার কাছে প্রতিটি উপাদানটির একাধিক কপি থাকলে আপনার স্বাভাবিকভাবে একটি লুপে কিছু করতে হবে। আমি সম্প্রতি এই অবস্থা ছিল। আমার যে দুটি পুনরাবৃত্তি উপাদানগুলির স্যুইচ করার প্রয়োজন ছিল তার ক্লাস এবং একটি ধারক ডিভ ছিল:

<div class="container">
  <span class="item1">xxx</span>
  <span class="item2">yyy</span>
</div> 
and repeat...

নিম্নলিখিত কোডটি আমাকে সমস্ত কিছুর মধ্য দিয়ে পুনরাবৃত্তি করার অনুমতি দিয়েছে এবং বিপরীত ...

$( ".container " ).each(function() {
  $(this).children(".item2").after($(this).children(".item1"));
});

1

আমি এই স্নিপেট দিয়ে এটি সম্পন্ন করেছি

// Create comments
var t1 = $('<!-- -->');
var t2 = $('<!-- -->');
// Position comments next to elements
$(ui.draggable).before(t1);
$(this).before(t2);
// Move elements
t1.after($(this));
t2.after($(ui.draggable));
// Remove comments
t1.remove();
t2.remove();

1

আমি পরে ব্যবহারকারীর ডাটাবেসে আপত্তি ক্রম পরিবর্তন করার জন্য একটি টেবিল করেছি () .পূর্বে (), সুতরাং এটি আমি যা পরীক্ষা করেছি তা থেকে।

$(obj1).after($(obj2))

2জেক্ট আগে objোকানো হয় 2 এবং

$(obj1).before($(obj2)) 

তদ্বিপরীত না।

সুতরাং যদি আপত্তি 1 হ'ল অ্যাজেক্ট 3 এর পরে এবং অজেজ 2 এর পরে اعتراض 4 এবং আপনি যদি স্থান 1 ওজেজ 2 পরিবর্তন করতে চান তবে আপনি এটি পছন্দ করবেন

$(obj1).before($(obj4))
$(obj2).before($(obj3))

এটি বিটিডব্লিউটি করা উচিত আপনি ইতিমধ্যে এর জন্য কোনও ধরণের সূচক না থাকলে আপনি প্রেজ () এবং .next () ব্যবহার করতে পারেন।


এটি গ্রহণযোগ্য উত্তরদাতাদের কেবল একটি রিপফ নয়, এটিতে একটি খারাপ সিনট্যাক্টিকাল ত্রুটি রয়েছে। আপনি কি এই কপিপস্ট করেছেন?
ক্লকডব্লিউআরকি

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

তাহলে কেন এটি পরে () ()) এর পরিবর্তে $ () পরে?
ক্লাবডাব্লিউআরপি

ওহ হ্যাঁ, আমি এটি দেখতে পাইনি, ধন্যবাদ। আমি এটিকে স্মৃতি থেকে ইনপুট করি, সংস্থাটি ছাড়ার পরে সেই কোডটি রাখার অধিকার নেই
ট্রান ভু ডাং খোয়া

0

যদি nodeA এবং nodeB ভাইবোন হয়, দুই লেগেছে <tr>একই <tbody>, আপনি শুধু ব্যবহার করতে পারেন $(trA).insertAfter($(trB))বা $(trA).insertBefore($(trB))তাদের অদলবদল করার, আমার জন্য কাজ করে। এবং আপনাকে $(trA).remove()আগে কল করার দরকার নেই, অন্যথায় আপনাকে কিছু ক্লিক ইভেন্টগুলিকে পুনঃবন্ধিত করতে হবে$(trA)


0
$('.five').swap('.two');

এই মত একটি jQuery ফাংশন তৈরি করুন

$.fn.swap = function (elem) 
{
    elem = elem.jquery ? elem : $(elem);
    return this.each(function () 
    {
        $('<span></span>').insertBefore(this).before(elem.before(this)).remove();
    });
};

Https://jsfiddle.net/ARTsinn/TVjnr/ইয়্যানিক গিনেসকে ধন্যবাদ


-2

ক্লোন () পদ্ধতিতে তাদের ক্লোন করা সবচেয়ে ভাল বিকল্প।


1
এটি কোনও কলব্যাক এবং বাইন্ডিংগুলি সরিয়ে দেয়
thekingoftruth

-2

আমি মনে করি আপনি এটি খুব সহজ করতে পারেন। উদাহরণস্বরূপ বলা যাক আপনার পরবর্তী কাঠামো রয়েছে: ...

<div id="first">...</div>
<div id="second">...</div>

এবং ফলাফল হওয়া উচিত

<div id="second">...</div>
<div id="first">...</div>

jQuery:

$('#second').after($('#first'));

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


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