如何处理jQuery选择器中的特殊符号
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何处理jQuery选择器中的特殊符号相关的知识,希望对你有一定的参考价值。
一般情况下,在jQuery选择器中,我们很少会用到诸如逗.地、逗#地、逗(地、逗[地等特殊字符,因为根据W3C规定,html文档中属性的值是不能包含有这些个特殊字符的,但是在实际应用中,偶尔也会遇到表达式中含有逗#地和逗.地等特殊字符,正如我的Skygq表单验证和表单ajax提交合体版插件,在许多人的使用过程中出现了需要选择器中支持逗.地的操作(他们都是java程序员)。那么是如何处理这些个特殊字符的呢看
要想让jQuery能处理这些特殊字符,使用普通的方式处理的话,是不照的,是必须要进行转义的。
HTML代码:
1
<div id="id.a">aa</div>
2
<div id="id#b">bb</div>
Jquery代码:
view
source
print?
1
var $id_a
= $('#id.a');//jQuery对象,实际上是没取到元素的
2
var $id_b
= $('#id#b');//jQuery对象,实际上是没取到元素的
3
alert(
$id_a.length);//输出0
4
alert(
$id_b.length);//输出0
5
var $id_right_a
= $('#id\\.a');//jQuery对象,对特殊字符,我们转义一下
6
var $id_right_b
= $('#id\\#b');//jQuery对象,对特殊字符,我们转义一下
7
alert(
$id_right_a.html() );//正确输出"aa"
8
alert(
$id_right_b.html() );//正确输出"bb" 参考技术A 需要转义下,最好是不要出现特殊符号,因为这样jquery对页面检索会很慢的。
特殊情况如何处理
【中文标题】特殊情况如何处理【英文标题】:How do you handle exceptional cases 【发布时间】:2008-11-29 17:45:02 【问题描述】:这是经常发生的情况,但这里是最新的例子:
公司在制作招聘广告时有各种联系数据(地址、电话号码、电子邮件......),他们有复选框来选择他们想要联系的方式。它基本上是描述性数据。用户在阅读广告时会看到类似“您可以通过邮件亲自申请......”,除了如果它是“通过网络门户”或“通过电子邮件”,因为这时应该会出现相应的按钮.这些选项存储在数据库中,客户(网站所有者,而不是制作广告的公司)可以更改它们(例如,他们可以添加“通过心灵感应”或其他方式),但如果他们篡改了“电子邮件”和“网络” -portal”选项,他们搞砸了他们的网站。
那么我应该如何处理所有行为方式相同的数据,除了以这种方式运行的“这个东西”,以及以其他方式运行的“那个东西”,并且数据本身应该可以由客户端编辑。
【问题讨论】:
【参考方案1】:您已将您的问题标记为“与语言无关”,并且并非所有语言都完全支持多态性,但这就是我处理这个问题的方式。
每个选项都有一些类型,不同的类型需要设置不同的属性。但是,每种类型都支持某种“渲染”方法,可以根据需要显示联系人方法。由于属性(电话号码或网址等)是特定于类型的,因此您可以在创建这些“对象”时验证管理员的输入,以确保提供了必要的数据并且有效。由于您实现了 render 方法,而不是吐出用户提供的 HTML,因此您可以确保呈现的页面是正确的。它不太灵活,但更安全、更用户友好。
在数据库中,您可以拥有一个包含所有类型联系人数据的稀疏填充表,或者一个具有公共属性的“父”表和具有特定类型属性的子表。这取决于您有多少类型以及它们有多大不同。在任何一种情况下,您都会有某种类型指示器,以便您知道数据应该绑定到的对象的类型。
【讨论】:
【参考方案2】:首先,请三思你是否真的需要它。原因很简单。您应该满足特定需求,输入数据是提供该服务的一种手段。如果数据不适合现有服务,那么它的价值是什么?谁是该特定信息的消费者?
有两种可能的答案:您正在扩大您的客户群,或者由于需求变化而需要更改现有服务。在这两种情况下,您都需要从商业模式的发展中脱颖而出。如果您描述了您需要什么服务以及它应该提供什么信息,您将避免大量特定数据,并带有易于在软件中实施的明确要求。
【讨论】:
【参考方案3】:我推荐resolution pattern,基于对数据库的提及。上面的链接描述了它,但它实际上比听起来要简单得多。您编写一个返回所有可能选项的数据库查询(例如,根据您的架构,您可能使用 UNION 或 JOIN 一起读取标准选项和自定义选项) - 然后 COALESCE SQL 关键字可用于查找第一个 '非 NULL 的选项值的分辨率。
【讨论】:
【参考方案4】:好吧,如果只是你有两个特殊的选项,然后其他任何事情都以相同的方式处理,那么将你的选项存储为字符串,如果两个特殊选项中的任何一个出现在该列表中,然后显示该特殊项目的相应内容。
只需检查您的物品清单中的两个特殊物品即可。没什么特别的。
【讨论】:
【参考方案5】:通过写一个非常简单的Rules Engine。您可以使用开箱即用的实现,也可以推出自己的实现。由于您的案例看起来很简单,所以我倾向于自己动手,因为这意味着更少的依赖关系(YMMV)。
【讨论】:
以上是关于如何处理jQuery选择器中的特殊符号的主要内容,如果未能解决你的问题,请参考以下文章
使用jquery mobile时如何处理手机中的表单导航后退按钮