我尝试过搜索,但我找不到任何有用的东西:(
我有一个可拖动的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。我需要执行这个自定义javascript,最有可能只使用' eval',只在预览div的元素内部。
假设我的自定义脚本是:
var customJS = "$('img').hide();";
如果我运行eval(customJS),两个div中的所有图像都将隐藏。 注意我的customJS变量中可以有任何有效的javascript代码...
任何人都可以帮助我吗?如何将自定义脚本的执行限制为特定元素?
谢谢!
答案 0 :(得分: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.
}