这是要传递的对象内容:
var data = displayObj.data;
itemHtml = $(displayObj.template).clone();
var i=0;
var ele = itemHtml.find('[data-id]');
$(ele).attr('id',data[i].id);
itemHtml.find('[data-conversation-id]').html('{data[i].id}');
itemHtml.find('[data-conversation-user-name]').html('{data[i].name}');
itemHtml.find('[data-conversation-preview]').html('{data[i].msg}');
(data[i].notification > 0 ? itemHtml.find('[data-toggle-notify]').css('display', 'block'): itemHtml.find('[data-toggle-notify]').css('display', 'none'));
itemHtml.find('[data-toggle-notify]').html('{data[i].notification}');
现在我将对象作为itemHtml传递到同一页面的其他位置 被附加到 for loop 中的div。
var counter = 5;
for(var i=0; i < counter;i++){
wrapper.append(itemHtml);
}
在追加之前,必须进行搜索以搜索所有附带的字符串
'{}'
因此删除括号以及它周围的单引号 他们将成为有效的价值。
html.('{data[i].name}')
上面要改为这个,现在这是一个有效的价值。这就是我要做的事。有人帮我..
html.(data[i].name)
答案 0 :(得分:0)
答案结果非常不同,请参阅答案的底部:
我不完全确定“在一个对象中”是什么意思,但这似乎是一个非常简单的正则表达式,你可以在这里练习:http://www.regexr.com/
这是在javascript中执行此操作的示例
const re = /'{(.*?)}'/g;
const s = "html.('{data[i].name}') html.('{data[i].name}')";
console.log(s);
const s2 = s.replace(re, '$1');
console.log(s2);
基本上,这匹配所有字符串'{
后跟任何字符,以非贪婪的方式终止}'
(即匹配任意部分中匹配尽可能少的字符,{ {1}})。
在该示例中,我还使用了.*
来匹配所有匹配项,但如果您只需要一个,则只需删除/g
。
看过你的jsfiddle,我认为可能会有一些简化。
首先,您无法执行g
,这是无效的语法。其次,你的数据是一个字符串,但是当你稍后迭代它时,我认为你认为它是一个数组中的两个对象。我不知道dispayObj究竟是什么,但我已经在我的固定示例中删除了它。
我拿你的数据字符串(我假设它是JSON,所以我更正了语法)并将其解析为javascript对象。然后我迭代数据并使用jquery创建一些元素。我添加数据属性,并使div的内容成为值(否则没有什么可看的)。
var x.y = 'foo'
在更新的jsfiddle中:https://jsfiddle.net/0cabq8rp/