如何在jQuery中“引用”一个字符串?

时间:2014-01-20 18:16:59

标签: javascript jquery html json quotes

信息:我有一些javascript代码,我将在下面显示,我有引号问题。

html = [];
style = 'class=odd';
html.push('<li '+style+' onclick=SelectItem("'+ele.id+'","'+idItem+'","'+dsItem+'","'+qtItem+'"); >'+id+' - '+$iObjItensListaVenda.result.ds_item[i]+'</li>');

我有来自JSON对象的字符串,如上所示。

问题:但是当我尝试将其作为函数参数放在onClick元素的<li>事件上时,我生成的html <li>元素变得完全没有格式化:

<li natural,"150");="" white="" american="" onclick="SelectItem("descItem1","2",TELHA" class="odd">00002 - TELHA AMERICAN WHITE NATURAL</li>

我想要什么:我需要一个类似函数的解决方案,可能已经存在于jQuery中,引用我的字符串。就像QuoteStr("s t r i n g");成为""s t r i n g""

也许你在抱怨:

  1. 变量ele是一个html <input>元素。
  2. 变量idItem仅包含数字,它们来自JSON对象。
  3. 变量dsItem是一个包含Item Description的字符串,它也来自JSON对象。
  4. 变量qtItem仅包含数字,它是项目的数量,它也来自JSON。

4 个答案:

答案 0 :(得分:2)

理智的解决方案是使用jQuery to build the element并绑定事件处理程序,而不是构建HTML字符串:

var $li = $('<li />', {
    "class": "odd",
    on: {
       click: function() {
           SelectItem(ele.id, idItem, dsItem, qtItem);
       }
    },
    text: id + ' - ' + $iObjItensListaVenda.result.ds_item[i]
});

如果您在循环中执行此操作并且变量最终具有错误的值,请参阅JavaScript closure inside loops – simple practical example。另外,您可以使用jQuery的.data API来设置和获取这些值。

答案 1 :(得分:0)

\"

中尝试'而不是onClick
$(".container").append("<a href='javascript:void(0)' onClick=\"showField('"+data.name+"','"+data.text+"');\">Edit</a>");

答案 2 :(得分:0)

您始终可以使用反斜杠来转义引号:

console.log('te\'st'); // te'st
console.log("te\"st"); // te"st

你可以为你的字符串做同样的事情,但我建议你把整个事情改写成更有用的东西。我的意思是不使用字符串来构建对象,而是直接构建对象。

例如:

var li = document.createElement('li');
li.className = myClass;
li.onclick = function(){/*...*/};

使用jQuery会更容易。

答案 3 :(得分:0)

您可以通过使用反斜杠转义字符串来使用字符串中的引号。

var text = "s t r i n g";
"\"" + text + "\"" === "\"s t r i n g\"";

来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String