1

我有 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)

但我什么也没找到。如何改进我的方法?感谢所有的答案。

4

1 回答 1

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。如果你需要一些模式,它可能是。但这很重。如果您想将文本与静态字符串匹配,只需==在 JavaScriptis和 CoffeeScript 中进行比较即可。上面的源代码是用香草而不是 jQuery 编写的,但我认为这对于我想说的已经足够了。

于 2014-12-22T20:17:38.163 回答