jQuery和CoffeeScript:检查value是否是表格单元格值的子字符串是一种更优雅的方法

时间:2015-06-17 22:13:52

标签: javascript jquery coffeescript

narrow_custs: ->
    input = $('.narrow_custs')[0].value
    $('.customers_go_here tr').each (index, ele) ->
        if ele.cells[0].innerHTML.indexOf(input) < 0 and ele.cells[1].innerHTML.indexOf(input) < 0
            $(ele).hide()
        else
            $(ele).show()

这个功能的第4行是丑陋的,我讨厌它。但它的确有效。如果有人能够证明这样做更优雅的方式,因为我确信这种方式存在,那就会膨胀。

input是文本框中的值。

$('.customers_go_here tr')是一个表行的jQuery数组。

我需要知道输入值是否是每行第一个或第二个td中任何值的子字符串。

Wurd。

2 个答案:

答案 0 :(得分:0)

您可以连接两个单元格的innerHTML,然后从字符串中查找输入的索引。它不应该有所作为,但在条件语句中看起来更好一些(以一条额外的行为代价):

narrow_custs: ->
  input = $('.narrow_custs')[0].value
  $('.customers_go_here tr').each (index, ele) ->
    haystack = ele.cells[0].innerHTML + ' ' + ele.cells[1].innerHTML
    if haystack.indexOf(input) < 0
      $(ele).hide()
    else
      $(ele).show()

答案 1 :(得分:0)

我很想做这样的事情:

narrow_custs: ->
  input = $('.narrow_custs').val()  # returns the first value
  all = $ '.customers_go_here tr'   # the full set
  show = all.filter (index, ele) -> # the matching ones
    "#{$(ele.cells[0]).html()} #{$(ele.cells[1]).html()}".match input
  hide = all.not show               # the rest
  do hide.hide  # hide the rest
  do show.show  # show the matching ones