3

環境

私が欲しいもの

ボックスをコピーしますが、コピーした子からクラス「hure」を削除します

複製するボックスの構造

<div name="box">
    <a .../>
    <span..../>
    <span..../>
    <div class="eye"> <img class="hure"..../></div>
...
</div>

2考える

  • 私はドラッグ アンド クローンに一般的な機能を使用しているので、10% のケースでのみ img タグがあり、クラス「hure」が見つかります。それ以外の場合は、他の入力フィールドがあります。
  • 複製された要素は、元の要素の後の dom 構造にあります (おそらく検索に重要​​です)。

私のアプローチ:

両方のクラスが削除された結果、なぜクローンだけではないのでしょうか?

helper : function(ev,el) { 
        if ($(this).find(".hure").length > 0){
        return($(el).find(".hure").removeClass("hure").clone());}
        else 
        {
        return($(this).clone());}
        },

助けてくれてありがとう、私はそのことをしようとして何時間も迷っています。オリジナルと ***g クローンを区別するコードが見つかりません。

編集

別の方法は、クローンの後にそれを行うことです。私はすでにそれを試しましたが、成功しませんでした。

私の成功しないアプローチ

if ($(this).find(".hure").length > 0){ $(this).find(".hure").eq(1).removeClass("hure");}

解決

stop: function() {
        if ($(".hure").length>0){
        $(".hure:eq(1)").removeClass("hure");}
        }
4

2 に答える 2

3

jsFiddle Demo

この回避策を思いつきました。基本的に、ドラッグの動きが止まると、関連付けることができるイベントがあります。停止イベントで要素を複製すると、必要に応じて配置できます。この時点で、クローンを操作する必要があります。デモでは、そのクラス「hure」が削除され、body に配置されます。配置は、ここで他の場所に決定することができます。

$('.box').draggable({
 helper: 'clone',
 stop: function(ev,ui){
  //clone helper
  var copy = $(this).clone();
  //use exposed api to set position
  copy.position(ui.position);
  copy.offset(ui.offset);
  //search for the class in copy and remove it
  $(".hure",copy).removeClass("hure");
  //place element (this may affect position/offset)
  document.body.appendChild(copy[0]);
 }
});
于 2013-09-23T18:55:56.580 に答える
0

これを試してみてください..最初にクローンを作成してから、クローンのクラスを削除します。

function (ev, el) {
    var $cloned = $(this).clone();
    $cloned.find(".hure").removeClass("hure");
    return $cloned;
}
于 2013-09-23T18:50:52.827 に答える