我有html网站,我想找到带括号的文字元素。例如,我有这样的跨度div:
#container
.div
%span= "example (1)"
.div
%span= "example (22)"
我希望获得带有文字“示例(22)”的范围。我有用来获取这些元素的方法。我尝试了以下解决方案:
getElement: (title, count) =>
#title = 'example', count = 22
# First try
$("#container span:contains(#{title} (#{count})")
# Second try
filter = new RegExp(title+"//("+count+"//)")
$("#container span").filter (i, el) ->
return !!$(el).text().match(filter)
但我一无所获。如何改进我的方法?谢谢你的所有答案。
答案 0 :(得分:0)
getElement = (title, count) ->
spans = document.querySelectorAll '#container span'
filter = Array.prototype.filter
filter.call spans, (span)->
text = span.textContent.trim()
text is "#{title} (#{count})"
element = getElement "example", 22
console.log element[0]?.textContent
我不知道您为何尝试使用RegExp。如果你需要一些模式,它可能是。但那很重。如果要将文本与静态字符串匹配,只需通过JavaScript中的==
进行比较,即CoffeeScript中的is
。
上面的源代码是用vanilla编写的,而不是jQuery,但我认为它足以满足我的想法。