-1

多くの画像の中で、場所を交換したい画像が 2 つあります。ある画像をクリックしてから別の画像をクリックすると、それぞれの画像が互いに入れ替わり、残りは同じままになります。私はこれの初心者なので、助けや指示があれば助かります。

4

6 に答える 6

2

これはすべての画像でも機能します。

 <img src="http://stunningwebsitetemplates.files.wordpress.com/2011/12/jquery.png"/>
 <img src="http://bloggerschmidt.de/images/stories/logo-mootools.gif" />
 <img src="http://stunningwebsitetemplates.files.wordpress.com/2011/12/jquery.png"/>
 <img src="http://bloggerschmidt.de/images/stories/logo-mootools.gif" />

JS

 $(function(){
     var src="";
     var old;
     $("img").click(function(){
         if(src=="")
         {
            src=$(this).attr("src"); 
             old=$(this);
         }
         else
         {
             old.attr("src",$(this).attr("src"));
             $(this).attr("src",src);
             src="";
         }
      });
 });​
于 2012-08-08T10:14:09.140 に答える
1

グローバル変数のない別のソリューション。

html

<div id="images">
  <img scr="/images/1.jpg" />&nbsp;
  <img scr="/images/2.jpg" />&nbsp;
  <img scr="/images/3.jpg" />&nbsp;
  <img scr="/images/4.jpg" />&nbsp;
  <img scr="/images/5.jpg" />&nbsp;
</div>

Jsファイル

$('img').click(function(){
    if($('#images img').hasClass('selected')){
        var src = $(this).attr('src');
        $('.selected').attr('src',src);
        $(this).attr('src',$('.selected').attr('src'));
        $(this).removeClass('selected');
    }
    else
        $(this).addClass('selected');   
});
于 2012-08-08T10:41:03.790 に答える
0

このHTMLを考えると:

<img src="image_1.jpg" />
<img src="image_2.jpg" />
<img src="image_3.jpg" />
<img src="image_4.jpg" />

次のJavaScriptを使用できます。

(function() {
    var previous = null;

    $('img').click(function() {
        var current = $(this);
        if (current.is(previous)) {    // clicked same image twice; reset
            reset_clicked();
        } else if (previous != null) { // two images clicked; swap
            swap_src(previous, current);
            reset_clicked();
        } else {
            set_clicked(current);
        }
    });

    function reset_clicked() {
        previous.removeClass('clicked');
        previous = null;
    }

    function set_clicked(img) {
        img.addClass('clicked');
        previous = img;
    }

    function swap_src(img1, img2) {
        var src1 = img1.attr('src');
        img1.attr('src', img2.attr('src'));
        img2.attr('src', src1);
    }
}());​

クラスは純粋に追加されるため、'clicked'CSSを使用してクリックした画像のスタイルを設定できます。このクラスは、以前にクリックした画像を識別するためにも使用できますが、DOMルックアップよりも高速であるため、代わりにJavaScript変数を使用しました。

JSFiddleにデモがあります:jsfiddle.net/cvthL/2

この回答は、 Jitendra Pancholiの最初の回答の改良版であり、 2番目の回答の代替として投稿されました。

于 2012-08-08T11:00:36.663 に答える
0

これは、img の src ではなく実際の要素をスワップする別のアプローチであり、スワップに外部変数を使用することも避けます。

$('img.swap').on('click', function() {
    var t = $(this);
    if (t.hasClass('clicked')) {
        t.removeClass('clicked');
        return;
    }

    var clicked = $('img.swap.clicked')
    if (clicked.length === 0) {
        t.addClass('clicked');        
        return;
    }
    var placeHolder = $('<div id="placeholder"></div>');
    clicked.before(placeHolder);
    t.after(clicked);
    placeHolder.before(t).remove();
    clicked.removeClass('clicked');
});​

例 - http://jsfiddle.net/BxST9/3/ (img の代わりに div を使用しますが、違いはありません)

于 2012-08-08T10:23:41.983 に答える