0

我有以下 html 标记

<body>
  <div class="old-wrapper">
    ...lots of stuff
  </div>
</body>

我需要用咖啡脚本函数替换它以提供以下标记

<body>
  <div class="new-wrapper">
    <input type="text" class="date-picker">
  </div>
</body>

我需要.old-wrapper用作目标

我的咖啡脚本功能看起来像这样

jQuery ->
  $(".old-wrapper").repaceWith(
    $("<div class='new-wrapper'>") +
    $("<input type='text' class='date-picker'>").datepicker +
    $("</div>")
  )

在 replaceWith 函数中连接这些字符串的正确方法是什么?(对不起,这是一个非常基本的 javascript 语法问题,但我的 javascript 知识有限)

4

4 回答 4

0

你有一个语法错误开始:

$("<div class="wrapper>")
  ^           ^        ^
open        close     ???

该代码的其余部分也是无效的。

尝试这个:$(".date-wrapper").wrapInner('<div class="wrapper" />');

你应该看看网站上的教程部分:http: //docs.jquery.com/Tutorials

于 2013-04-09T08:09:32.740 回答
0

这是我的尝试。请注意,我正在old-wrapper根据原始问题寻找课程。

我还使用了将内部调用放入它们自己的函数中的技术,我认为这可以使代码更加整洁。

这是一个jsFiddle,显示了下面的代码

getDatePicker=->$('<input/>', {type:'text', class:'date-picker'}).datepicker()

getWrapper=->$('<div/>', {class:'new-wrapper'}).append getDatePicker()

$ -> $('.old-wrapper').replaceWith getWrapper()
于 2013-04-09T14:35:41.717 回答
0

这应该工作!

jQuery ->
    $('.date-wrapper')
        .append($('<div class="wrapper" />'))
        .find('.wrapper')
        .append($('<input type="text" class="date-picker">').datepicker())
于 2013-04-09T08:53:04.757 回答
0

可能是这样的。。

jQuery ->
  $('.date-wrapper').append(
    $('<input type="text" class="date-picker" id="user_dob" value="' + dob + '" name="user[dob]" />').datepicker()
  ).wrapInner('<div class="wrapper" />')
  $('.wrapper').unwrap()

而不是替换元素只是附加你的 datepicker-input 元素,像你需要的那样包装它,然后用unwrap.

编辑

重读问题后,我发现我的方法有点错误;-)

对于您的问题,最简单的解决方案不是像您已经做的那样简单地替换所有日期包装器元素,然后用您的新包装器包装所有这些吗?

dob = '2013/4/9'
$ ->
  $('.date-wrapper').replaceWith($('<input type="text" class="date-picker" id="user_dob" value="' + dob + '" name="user[dob]" />').datepicker())      
  $('.date-picker').wrapAll('<div class="wrapper" />')

生产

<div class="wrapper">
    <input id="user_dob" class="date-picker hasDatepicker" type="text" name="user[dob]" value="2013/4/9">
</div>
<div id="ui-datepicker-div" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>

小提琴

于 2013-04-09T08:31:44.603 回答