我有一个用jquery创建的动态表。我遇到的问题是,jquery会干扰我的字符串,所以它没有正确解析为onclick方法。
for (var i = 0; i < data.result.list.length; i++)
{
var tr = $("<tr></tr>");
tr.append("<td>" + "<a onclick='" + data.result.list[i].cfunction + "'>" + data.result.list[i].cvalue + "</a>" + "</td>");
tr.append("<td>" + + "</td>");
table.append(tr);
}
data.result.list[i].cfunction
有一个像"getMyMethod('My parameter')"
这样的字符串值,它基本上是用引号中的参数调用方法。
但是在jQuery将其解析为onclick
函数后,它的值会更改为onclick="getMyMethod(" my="" parameter')'=""
这是生成的html:
<a onclick="getMyMethod(" my="" parameter')'="" >My Value</a>
有人能让我朝着正确的方向前进吗?
答案 0 :(得分:1)
您需要转发内部双引号"
var func = data.result.list[i].cfunction.replace( /"/g, "\\\"" );
tr.append("<td>" + "<a onclick='" + func + "'>" + data.result.list[i].cvalue + "</a>" + "</td>");
答案 1 :(得分:1)
你应该用以下代码修改代码:
tr.append(
$("<td></<td>").append(
$("<a></a>")
.attr({
"href" : "#"
})
.text(data.result.list[i].cvalue)
.attr({
"onclick" : data.result.list[i].cfunction
})
)
);
答案 2 :(得分:1)
更改此行
"<a onclick='" + data.result.list[i].cfunction + "'>"
到这个
'<a onclick="' + data.result.list[i].cfunction + '">'
答案 3 :(得分:1)
您可以修改数据中的cfunction项,如下所示(编码):
cfunction: "getMyMethod(\"My parameter\")",
这在控制台中有效(确保表ID存在):
var data = {
result: {
list: [
{
cfunction: "getMyMethod(\"My parameter 1\")",
cvalue: "1"
},
{
cfunction: "getMyMethod(\"My parameter 2\")",
cvalue: "2"
}
]
}
}
var table = $("#testTable");
for (var i = 0; i < data.result.list.length; i++) {
var tr = $("<tr></tr>");
tr.append("<td>" + "<a onclick='" + data.result.list[i].cfunction + "'>" + data.result.list[i].cvalue + "</a>" + "</td>");
tr.append("<td>" + + "</td>");
table.append(tr);
}
var getMyMethod = function (funcParam) {
console.log(funcParam);
};
答案 4 :(得分:1)
你能试试吗?并确保您的spinner_country.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Country country = (Country) parent.getSelectedItem();
Toast.makeText(context, "Country ID: "+country.getId()+", Country Name : "+country.getName(), Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
值
data.result.list[i].cfunction
"getMyMethod('My parameter')"