如何使用jQuery动态添加div的点击事件

3
我正在动态加载div并使用以下代码绑定div的点击事件: $(jq(userData.email)).live('click', function() { alert('hello from binded function call'); }); 在这里,我将emailid(a@b.com)用作div id。我使用jq方法来解析id。执行后,它显示“未识别的表达式”:#a@b.com
以下是我正在使用的jq方法来解析:
function jq( myid ) 
{
    return "#" + myid.replace( /(:|\.|\[|\])/g, "\\$1" );
}

2
FYI,您不能在ID中使用@符号。 - dKen
你的 $(jq(userData.email)).live 没有加上井号,是不是遗漏了?另外,live() 已经被弃用了,建议使用 on() 代替。 - Henrique Miranda
此外,这可能会有所帮助:https://dev59.com/IlPTa4cB1Zd3GeqPla-f - Henrique Miranda
2个回答

2
你需要转义特殊字符:
$("#abc\\@abc").doSomething();

请看jQuery文档
请注意{{link2:.live()已被弃用(在jQuery >= 1.9中已删除)}}。

我检查了一下,它可以解决“无法识别的表达式”错误。但是我无法获取点击事件。 - Anbu Raj
请注意,live在jQuery >= 1.9中已被弃用和删除。这个链接 http://jsfiddle.net/2Z94z/ 对我而言没有问题,可以正常运行。 - Eich
这里我正在动态加载div,但它没有起作用。http://jsfiddle.net/u87dH/10/ - Anbu Raj

1

a@b.com不是一个有效的ID。

ID和NAME令牌必须以字母([A-Za-z])开头,可以后跟任意数量的字母、数字([0-9])、连字符(“-”)、下划线(“_”)、冒号(“:”)和句点(“.”)。

请参阅以下问题HTML中id属性的有效值是什么?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接