1

我需要将 HTML 包裹在当前的 div 周围,这就是我目前得到的:

HTML:

<input type="text" data-placeholder="username" />

需要渲染为:

<div class="placeholding-input">
  <input type="text" data-placeholder="username" />
  <label>Username</label>
</div>

到目前为止我得到了什么:

$.each($('input[type="text"], input[type="password"], textarea'), function(){
    var input = $(this);
    var container = $('<div />').addclass('placeholding-input');
    input.wrap(container);
    var label = $('<label />').html(input.data('placeholder')).appendTo(container);
});

但这由于某种原因不起作用,我不知道为什么。

感谢帮助 :)

4

5 回答 5

3
var container = $('<div />').addclass('placeholding-input');

到:

var container = $('<div />').addClass('placeholding-input');
//                              ^--------------------- upperCase

完整代码:

$('input[type="text"], input[type="password"], textarea').each(function() {
    var input = $(this);
    var container = $('<div>').addClass('placeholding-input');
    var label = $('<label>').html(input.data('placeholder'));
    input.wrap(container).after(label);
});​

演示

于 2012-06-11T15:09:15.687 回答
2

尝试如下,

$(function() {
    $.each($('input[type="text"], input[type="password"], textarea'), function() {    
        var input = $(this);
        var container = $('<div />').addClass('placeholding-input');
        var label = $('<label />').html(input.data('placeholder'));
        input.wrap(container).after(label);
    });
});

演示:http: //jsfiddle.net/skram/CsGUv/

于 2012-06-11T15:12:59.920 回答
1
var input = $(this).wrap((container = $('<div />').addClass('placeholding-input')));
input.after((label = $('<label />').html(input.data('placeholder'))));

完成,谢谢帮助:)

于 2012-06-11T15:10:28.303 回答
1
$.each($('input[type="text"], input[type="password"], textarea'), function(){
    var input = $(this);
    var container = $('<div />').addClass('placeholding-input'); // not addclass
    var label = $('<label />').html(input.data('placeholder'));
    input.wrap(container).after(label);
});

演示

于 2012-06-11T15:11:40.223 回答
1

除了 中的语法错误之外,addclass在包装输入之前将标签附加到 div。

http://jsfiddle.net/Yb9QV/

$.each($('input[type="text"], input[type="password"], textarea'),
       function(){
            var input = $(this);
            var container = $('<div />').addClass('placeholding-input');

            var label = $('<label />')
                .html(input.data('placeholder')).appendTo(container);

            input.wrap(container);
});​
于 2012-06-11T15:38:44.970 回答