3

可能重复:
当 id 包含点时,如何使用 jquery 按 ID 选择 html 节点?

我有一个 jquery modal,功能是显示配置文件框。

<a rel="Modal" href="#<?php echo $username; ?>">Profile</a>

到目前为止,如果用户名不使用 ID 点 (.)

<div id=<?php echo $username; ?>

当用户名使用 ID 点 (.),例如john.doe. 盒子不能显示任何东西。

那么我该如何设置呢?

感谢您的帮助。

4

4 回答 4

1

您实际上并没有显示显示模式的 Javascript,但是使用 jQuery,您需要转义.选择器中的任何内容。

于 2012-11-16T05:06:15.870 回答
1

快速而肮脏的解决方案是将问题字符转换为问题较少的字符。例如

<?php $normalisedUsername = htmlspecialchars(
    str_replace('.', '_', $username), ENT_QUOTES); ?>

<a rel="Modal" href="#<?php echo $normalisedUsername; ?>">Profile</a>

<!-- snip -->

<div id="<?php echo $normalisedUsername ?>"> ...

我说这很脏,因为它.在 ID 属性中完全有效。更好的解决方案是更改用于查找模态内容的 jQuery 代码。执行此操作的范围完全取决于您的模态实用程序是您自己编写的还是属于 jQueryUI 或 Bootstrap 等库的一部分。

例如,如果您使用Bootstrap 的 Modal,您可以将适当的转义添加到触发器的data-target属性中,例如

<button type="button" data-toggle="modal" data-target="#john\\.doe">Launch modal</button>
于 2012-11-16T05:17:10.170 回答
1

使用$('#john\\.doe'). 似乎正在使用 Chrome 和 FF。

于 2012-11-16T05:14:29.247 回答
0

尝试使用:

echo str_replace($search, $replace, $subject)

这是一个详细的教程

于 2012-11-16T05:35:59.193 回答