【问题标题】:JQuery reapply zebra-striping after GET requestJQuery 在 GET 请求后重新应用斑马条纹
【发布时间】:2013-06-15 02:18:04
【问题描述】:

我有一张带有“斑马条纹”CSS3 类的表格:

.zebra-stripe tr:nth-child(odd) {
    background-color: #c6e1ff;
}

.zebra-stripe tr:nth-child(even) {
    background-color: #eeeeee;
}

表格上方是一个输入字段,用户提交后将在一行前面加上 JQuery 和 POST。

这发生在:

function submit(id) {
  $.post(
    "URL",  // uses template toolkit 'c.uri_for' to actually add message in database 
    { 
      msgtype: 'some-type',
      msg: $('#some-id').val()
    }, 
    function (data) { 
      $('#table-id').prepend(data);
    }
  );
  $('#some-id').val('');
  return false;
}

这段代码在我的表格顶部添加了一行,所有的 CSS 都很好而且很漂亮。但是,在删除任何给定行时(每行都有一个“删除”按钮),使用以下 JQUERY 和 GET:

function remove(id1,rowid) {

  // uses template toolkit 'c.uri_for' to actually remove message in database
  $.get('URL', function (data) { 
    $('#' + rowid).hide();
  });

  //attempt to reapply styles
  $('#field-note-table').removeClass("zebra-stripe");
  $('#field-note-table').addClass("zebra-stripe");

  return false;
}

不重新应用 CSS(破坏斑马条纹)。删除行后如何让它重新应用 CSS?

【问题讨论】:

  • 你在哪里使用remove方法?
  • @j08691 抱歉,没有澄清。我正在使用模板工具包,因此我的“URL”被替换为c.uri_for 调用以实际添加或删除数据库中的消息。所以它被隐藏了,但它也在后台被移除。
  • @Shaddow 不确定我理解。每行都有一个删除按钮,点击时会调用remove函数。
  • @j08691 啊... hide() != remove()

标签: jquery css


【解决方案1】:

只需调用 hide 即可使您的行不显示。假设您的斑马条纹 CSS 根据奇数/偶数对每一行应用不同的颜色,则隐藏的偶数行将包含在此条纹中。

如果隐藏后不需要该行,请改用remove;那么该行将不再包含在条带中:

$.get('URL', function (data) { 
    $('#' + rowid).remove();
});

否则,你可能不得不使用 JS 来选择性地条带化。

【讨论】:

  • 不知道我是怎么错过的。猜猜这是作为 JQuery 新手的结果 :-)
  • 另外值得一提的是这个。如果你想从 jQuery 中获得漂亮的隐藏/淡出动画但仍然完全删除元素: $('#' + rowid).fadeOut(500, function(){ $(this).remove(); });跨度>
【解决方案2】:

输入这段代码:

//attempt to reapply styles
$('#field-note-table').removeClass("zebra-stripe");
$('#field-note-table').addClass("zebra-stripe");

内部成功方法:

$.get('URL', function (data) { 
    $('#' + rowid).remove();
    //<--------- Here
  });

【讨论】:

  • 这不起作用。隐藏的行仍然存在于 DOM 中,并将保持它在表中的位置,打破斑马条纹。
  • 因此,如果您以后不需要这些行,请尝试将其删除而不是隐藏。查看编辑。
【解决方案3】:
function remove(id1,rowid) {

    // uses template toolkit 'c.uri_for' to actually add message in database
    $.get('URL', function (data) { 
        $('#' + rowid).hide(0, reStripZebra);
    });

    return false;
}

function reStripZebra() {
    $('#table-id td').each(function(index) {
        if(index % 2 == 0) $(this).removeClass("zebra-stripe");
        else $(this).addClass("zebra-stripe");
    });
}

【讨论】:

  • 很抱歉没有说明我对 CSS3 :odd 和 :even 选择器的使用。这里的问题是隐藏行仍然存在,并将包含在您的 .each 迭代中,打破斑马条纹。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 2012-09-06
  • 1970-01-01
  • 2011-04-04
  • 1970-01-01
相关资源
最近更新 更多