【问题标题】:Hiding div with apostrophe in title在标题中隐藏带有撇号的 div
【发布时间】:2014-07-26 22:04:29
【问题描述】:

我在隐藏名称中包含撇号的 div 时遇到问题。要隐藏使用此代码:

$("div[data-title='Contact']").hide()

一切都很完美,但是当 div 被称为撇号时就会出现问题。我尝试了几种形式(见下文),但它们都不起作用。

$("div[data-title='Offer's']").hide()
$("div[data-title='Offer/'s']").hide()
$("div[data-title='Offer's']").hide()

还有其他方法可以引用适当的 div 吗?


我应该补充一点,当我查看页面源时 - 标题以这种格式保存:

 data-title="Offer's"

我检查了:

 '
 /'
 //'
 \'
 \\'
 '

什么都没有……

【问题讨论】:

  • 您是否尝试过使用反斜杠 (`\`)?
  • 很奇怪。 $("div[data-title='Offer's']").hide(); 在 jsFiddle 上运行良好。
  • 猜测:可能是 & 符号被扩展或解析。转义它 (\&) 应该不起作用,因为它不是一个通常的要转义字符。也许再次扩大它? &...
  • 啊,等等。字符串 visible 的格式应该无关紧要(即,我确信在内部表示中它没有说 &)。然后尝试双重转义:\\'。单个转义 \' 被 Javascript 的字符串解析器剥离。
  • 可悲的是,仍然一无所获:(

标签: jquery html jquery-selectors


【解决方案1】:

在您的源中显示的属性值为Offer's。这很棘手;它看起来像一个字符引用,但它是双重编码的。 ' 被编码为',但' 中的& 然后被编码为&

当 HTML 解析器解码字符引用时,它只解码它们一次。所以得到的属性值确实是Offer's' 正是它的出现方式:一个 & 符号,后跟字符序列“apos”,然后是一个分号。此字符串不会进一步解码为' 字符。

您在属性选择器中使用的值需要匹配值Offer's,而不是Offer's,当然也不是源代码中出现的双重编码Offer's。因此,正确的选择器是:

$("div[data-title='Offer's']").hide()

【讨论】:

    【解决方案2】:

    试试这个:$("div[data-title='Offer\'s']").hide();

    【讨论】:

    • 不幸的是它不起作用。我应该补充一点,当我查看页面源时 - 标题以这种格式保存 - data-title="Offer's"
    【解决方案3】:

    $("div[data-title='Offer\'s']").hide(); 有效。

    这里是jsFiddle

    这里还有一个截图:

    【讨论】:

    • 它不起作用。我应该补充一点,当我查看页面源时 - 标题以这种格式保存 - data-title="Offer's"
    • 谢谢。它适用于小提琴,但不适用于我的网页。请 - 使用此“优惠”作为数据标题。在你的小提琴上,我仍然看到“Offer's”。另外,我可以通过 PM 链接将您发送到此网页。
    • 这不可能工作,因为引号是冲突的。
    • 您不断更新您的小提琴,但您一次都没有触及答案中的代码。也许这可能会造成混乱?
    • 这意味着我正忙着回答。我给了小提琴,所以它可以作为一个更新的答案。
    猜你喜欢
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 1970-01-01
    • 2018-09-08
    • 2021-04-03
    • 1970-01-01
    • 2021-07-03
    相关资源
    最近更新 更多