【发布时间】:2017-09-14 18:07:49
【问题描述】:
我在编写将识别“晚上 8:00”的 jQuery 时遇到问题。出现两次。我写的一切都会成功改变 “晚上 8:00 - 晚上 8:00” (以下简称“A”)至“晚上 8:00”也会改变 “晚上 8:00 - 晚上 10:00” (以下简称“B”)和 “早上 6:00 - 晚上 8:00” (以下简称“C”)至“晚上 8:00”
时间来自 PHP,考虑到 PHP 已经非常复杂,几乎可以显示所有可能的内容,所以用 PHP 编写解决方案超出了我的大脑能力 “2017 年 3 月 31 日星期五 - 2017 年 4 月 14 日星期五,上午 9:00 - 晚上 10:00”到 “2017 年 4 月 28 日,星期五,下午 2:00 - 下午 4:00。”到 “2017 年 2 月 9 日星期四 - 2017 年 2 月 11 日星期六晚上 8:00 - 晚上 8:00”以及介于两者之间的所有内容,所以我正在尝试用 jQuery 编写一个解决方案来解决这个问题。当一个事件在几天内有几次表演并且没有结束时间时,就会产生实际问题。例如:活动在星期四、星期五和星期六晚上 8:00 开始。并且没有结束时间。所以最终发生的事情是晚上 8:00。 - 8:00 PM。被展示。我想使用 jQuery 将其更改为晚上 8:00
最简单的解决方案是行不通的,不会改变 A、B 或 C。
$('span.eventTime:contains("8:00 p.m. - 8:00 p.m.")').text('8:00 p.m.');
我认为这是因为连字符,但这只是猜测。
但是,在 PHP 和 jQuery 中将“-”更改为“-”不起作用。仅在 PHP 中将其更改为“-”并在 jQuery 中保留“-”也不起作用。
所有有效的东西最终都会改变 A、B 和 C,因为代码看到“8:00”出现一次,并且不知道它只有在看到 2 个“8: 00"。
以下是我尝试过的其他解决方案的列表,这些解决方案并未专门将 A 更改为晚上 8:00。而不是 B 和 C:
$('span.eventTime:contains("8:00"):contains("p.m."):contains("-"):contains("8:00"):contains("p.m.")').text('8:00 p.m.');
$('span.eventTime:contains("8:00 p.m. -"):contains("8:00 p.m.")').text('8:00 p.m.');
$('span.eventTime:contains("8:00 p.m."):contains("- 8:00 p.m.")').text('8:00 p.m.');
$('span.eventTime:contains("8:00 p.m."):contains("-"):contains("8:00 p.m.")').text('8:00 p.m.');
我已经尝试过其他方法,但我已经从我的代码中删除了它们。以上所有这些不一定都有效。
下面的代码适用于 A 和 B,但它既麻烦又愚蠢,而且我必须写很多、很多、更长的时间才能涵盖所有可能的选项,比如 C,我不喜欢这个想法。
$('span.eventTime:contains("8:00"):contains("p.m."):contains("-"):contains("8:00"):contains("p.m."):not(:contains("9:00"):contains("p.m.")):not(:contains("10:00"):contains("p.m."))').text('8:00 p.m.');
所以...也许你们可以解决这个问题,因为我已经无计可施了。
我目前正在使用下面的内容,但我讨厌它——它很愚蠢,即使它有效。而且我必须编写涵盖超过晚上 8:00 的迭代。 - 晚上 8:00
$('span.eventTime:contains("8:00"):contains("p.m."):contains("-"):contains("8:00"):contains("p.m."):not(:contains("a.m.")):not(:contains("1")):not(:contains("2")):not(:contains("3")):not(:contains("4")):not(:contains("5")):not(:contains("6")):not(:contains("7")):not(:contains("9")):not(:contains("10")):not(:contains("11")):not(:contains("12"))').text('8:00 p.m.');
【问题讨论】:
-
moment.js 会帮助你吗?
-
注意:我的连字符 HTML 最终变成了连字符。我有“-”没有写的空格。这是更正的句子:但是,将“-”更改为“-”在 PHP 和 jQuery 中都不起作用。将其更改为“-”仅在 PHP 中并在 jQuery 中留下“-”也不起作用。
-
这很酷,johnny,但我快到最后期限了,没有时间实施新的东西。
-
你肯定不能改PHP?
-
我可以,但我不知道如何编写复杂的语句来防止晚上 8:00。 - 8:00 PM。不会发生。
标签: jquery jquery-selectors contains