在不使用eval()的情况下从字符串执行jquery命令
Execute jquery command from a string without using eval()
我有一个jquery命令的javascript数组:
var a = ["$('div').hide();","$('span').show();","$('p').fadeIn(100);"];
我想执行数组中的第一个命令,但不使用
eval(a[0]);
有更好的方法吗?
谢谢。
前提条件是:不。
更好的解决方案是更改数组,使其包含函数而不是字符串。
var a = [
function () {
$('div').hide();
},
function () {
$('span').show();
},
function () {
$('p').fadeIn(100);
}
];
a[0]();
您还可以使用一个包含函数的对象
var a = {
hideDiv: function () {
$('div').hide();
},
showSpan: function () {
$('span').show();
},
fadeinP: function () {
$('p').fadeIn(100);
}
}
像这样使用
a.hideDiv();
a.showSpan();
a.fadeinP();
DEMO
不是一种特别更好的方法,而是一种不同的方法:
// create a new script element
var elem = document.createElement("script");
elem.type = "text/javascript";
elem.innerHTML = a[0];
// add it to the document body so it gets executed
document.getElementsByTagName("body")[0].appendChild(elem);
然而,如果你可以选择从不同的数据结构开始,并使用函数而不是源代码,它会变得更容易、更干净:
var a = [
function() { $('div').hide(); },
function() { $('span').show(); }
function() { $('p').fadeIn(100); }];
// invokation is clean
a[0]();
相关文章:
- 如何在不创建格式错误的HTML标记的情况下分解字符串
- 如何在不打断标记的情况下突出显示html字符串中的文本
- 在不使用循环的情况下,从一个数据库字符串值向javascript数组添加多个对象
- 如何避免JSON.stringify在特殊情况下返回undefined,从而为JSON.parse创建字符串失败
- 如何通过JS在不干扰其标记的情况下更改HTML文档中字符串的所有实例
- Javascript alert()在没有const字符串的情况下不显示
- 在这种情况下,如何将字符串添加到函数中 php
- 在不更改 HTML 的情况下操作 HTML 字符串的内容
- 限制字符串中显示的字符数,但在没有php的情况下以模态显示同一字符串中的所有字符
- 通过位置栏更改查询字符串,AJAX加载的菜单不会't在没有硬刷新的情况下重新填充
- 在保持字符串同等有效的情况下对其进行视觉加扰
- 如何在没有javascript中的split函数的情况下将字符串拆分为单词
- 在这种情况下,我如何在jquery中将字符串放入php中
- 在不渲染的情况下计算字符串大小
- 在不使用HTML的情况下对字符串中的换行符进行编码
- jQuery:在没有字符串选择器的情况下分离
- 在不使用AJAX的情况下将JSON字符串发送到php文件
- 如何在没有查询字符串和参数的情况下加载jQuery
- 在没有科学记数法的情况下将大数字转换为字符串
- 在 JavaScript 中给定时区字符串的情况下计算 UTC 偏移量