0

我在 ajax 请求后替换了 html 表中的一行。成功请求后,我收到一个部分 html 片段,我将其替换为当前行。

$("#id").replaceWith(响应)

现在我添加了一个复选框输入字段,并使用这个 css 和 js 库Bootstrap Switch来拉皮条

因此,在我替换行后,我只看到一个普通的输入复选框。而不是漂亮的切换。如果我刷新页面,则会呈现切换。

任何人都可以帮助我并指出这个问题的问题吗?我尝试在行和父级上使用 trigger('create') 。

这是我用来更新表格的代码,就像我提到的那样,它只是在做一个替换。

processRecord = (barCode, random_id) ->
  postParams = { barCode: barCode, ran_id: random_id }

  $.ajax
    url: '/scans'
    type: 'post'
    data: postParams

    success: (response, textStatus, xhr) ->
      $("#" + random_id).replaceWith(response)
      $("#scans").trigger('create')

我一直在研究引导开关代码。init 方法将导致在渲染后将额外的 html 添加到输入复选框。当我进行替换时,这不会发生。看看这里:https ://github.com/nostalgiaz/bootstrap-switch/blob/master/static/js/bootstrapSwitch.js#L14

谢谢

4

1 回答 1

0

更换元素后,您必须再次初始化开关插件。

success: (response, textStatus, xhr) ->
  $("#" + random_id).replaceWith(response)

      // assuming #scans is the parent of inputs
      var sc = $("#scans").

  if (!sc.hasClass('has-switch')) { // this is to prevent stacking
     sc['bootstrapSwitch'](); // if has-switch is not found, use switch plugin
  }
于 2013-05-23T08:39:15.530 回答