-1

検索してみましたが、役立つものは何も見つかりませんでした:(

画像/ラベルとテキスト フィールドをドラッグできるドラッグ可能な div があります。新しい div で div の内容をプレビューするために (理由は聞かないでください笑)、「プレビュー」という関数を作成しました。

var myDraggableDiv = $('#div_draggable');

function preview()
{
var div = document.createElement('div');
div.id = 'div_preview';

$(div).html(myDraggableDiv.html()); // copy html
}

したがって、関数を実行した後、プレビュー div にはドラッグ可能な div と同じ内容が含まれます。ここで、プレビュー div 内でカスタム JavaScript を実行する必要があります。カスタム JavaScript コードは、「customJS」という変数内にあります。更新された関数は次のとおりです。

function preview()
{
var div = document.createElement('div');
div.id = 'div_preview';

$(div).html(myDraggableDiv.html());
eval(customJS);
}

主な問題は、カスタム JavaScript がグローバルに実行され、ドラッグ可能な div にも影響を与えることです。プレビュー div の要素内でのみ、おそらく「eval」を使用して、このカスタム JavaScript を実行する必要があります。

私のカスタムスクリプトが次のとおりであるとします。

var customJS = "$('img').hide();";

eval(customJS) を実行すると、両方の div 内のすべての画像が非表示になります。customJS 変数に有効な JavaScript コードを含めることができることに注意してください...

誰でも私を助けることができますか?カスタム スクリプトの実行を特定の要素に制限するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

3

使用しないでくださいeval()(ほとんどのジョブにとって間違ったツールです)。この場合、関数ははるかに優れています。

var customJS = function(parent) {
    $('img', parent).hide();
};

これで、実行できるようcustomJS(div)になり、セレクターはdiv要素に対して相対的なものになります。

ちなみに、を見てください.clone()。それはあなたに役立つかもしれません:

function preview() {
    var $clone = myDraggableDiv.clone();

    customJS($clone); // IMO, it would be nicer to
                      // just write your custom JS here.
}
于 2012-10-17T21:26:29.567 に答える