Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否仅在特定div内执行eval()?_Javascript_Jquery_Html_Eval - Fatal编程技术网

Javascript 是否仅在特定div内执行eval()?

Javascript 是否仅在特定div内执行eval()?,javascript,jquery,html,eval,Javascript,Jquery,Html,Eval,我试着搜索,但没有找到任何有用的东西:( 我有一个可拖动的div,可以在其中拖动图像/标签和文本字段。要在新div中预览div的内容(不要问我为什么lol),我创建了一个名为“预览”的函数: 因此,在执行该函数后,我的preview div具有与Dragable div相同的内容。现在我需要在preview div内执行自定义javascript。自定义javascript代码位于名为“customJS”的变量内。更新后的函数为: function preview() { var div = d

我试着搜索,但没有找到任何有用的东西:(

我有一个可拖动的div,可以在其中拖动图像/标签和文本字段。要在新div中预览div的内容(不要问我为什么lol),我创建了一个名为“预览”的函数:

因此,在执行该函数后,我的preview div具有与Dragable div相同的内容。现在我需要在preview 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”,只在preview div的元素内部执行

假设我的自定义脚本是:

var customJS = "$('img').hide();";
如果我运行eval(customJS),两个div中的所有图像都将隐藏。 注意,我的customJS变量中可以有任何有效的javascript代码

有人能帮我吗?我怎样才能将自定义脚本的执行限制到特定的元素

谢谢!

不要使用
eval()
(对于大多数作业来说这是错误的工具)。在这种情况下,函数会更好:

var customJS = function(parent) {
    $('img', parent).hide();
};
现在,您可以运行
customJS(div)
,选择器将相对于
div
元素

顺便说一句,看看。它可能对您有用:

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

    customJS($clone); // IMO, it would be nicer to
                      // just write your custom JS here.
}

来吧,我认为你不能,除非你在运行之前解析你的js字符串并修改它。最好使用iframe进行预览,而不使用
eval
.Hm。你的意思是
$('img',parent.hide()
?@VisioN:是的,谢谢你抓住了这一点。
function preview() {
    var $clone = myDraggableDiv.clone();

    customJS($clone); // IMO, it would be nicer to
                      // just write your custom JS here.
}