我试图将参数传递给动态生成元素的onclick事件。我已经看到了现有的stackoveflow问题,但它没有回答我的具体需求。在这个存在的问题中,他们试图使用$(this).text()来访问数据。但我不能在我的例子中使用这个。将参数传递给动态生成元素的单击事件
Click event doesn't work on dynamically generated elements
在下面的代码片段,我试图通过程序和macroVal到onclick事件,但它不工作。
onClickTest = function(text, type) {
if(text != ""){
// The HTML that will be returned
var program = this.buffer.program;
var out = "<span class=\"";
out += type + " consolas-text";
if (type === "macro" && program) {
var macroVal = text.substring(1, text.length-1);
out += " macro1 program='" + program + "' macroVal='" + macroVal + "'";
}
out += "\">";
out += text;
out += "</span>";
console.log("out " + out);
$("p").on("click" , "span.macro1" , function(e)
{
BqlUtil.myFunction(program, macroVal);
});
}else{
var out = text;
}
return out;
};
的执行console.log出来给我这个
<span class="macro consolas-text macro1 program='test1' macroVal='test2'">{TEST}</span>
我曾经尝试都this.program和程序,但它不能正常工作。
我已经移动了onClickTest之外的偶处理程序代码。后来我意识到,如果我把它放在函数内部,我的函数根本没有被触发,只有onkekevent被触发。你能给我一个如何传递参数的示例代码片段吗? – user911
@ user911 - 是的,我将它添加到我的答案中。您正在生成不正确的HTML。在返回之前调用'console.log(out);'仔细检查结果。 – Igor
您的回答帮助我解决了我的html引用问题,但我仍然无法通过参数。我已经提出了你的答案,但仍然不能接受。我已经尝试了这个。程序和程序。它不起作用。我也更新了我的问题以解决报价问题,请检查。 – user911