2

在 jsFiddle 上放了一个非常简化的示例。

基本上,我正在尝试构建我的 HTML,然后在完成后附加整个内容。JS 看起来像这样:

var label = 'My label',
    var checkbox = $('<input type="checkbox">').prop({
                id: 'checkboxId',
                name: 'checkboxId',
                checked: visible
            });
    listItem = ('<li class="customise_option"><label>'+checkbox+' '+label+'</label></li>');

$('#mylist').append(checkbox);
$('#myotherlist').append(listItem);

追加checkbox就好了,但是如果我尝试包含checkbox在我的listItem变量中,那么我只会得到:

[object Object] My label

因此,就其本身而言,jQuery 可以将 mycheckbox作为字符串附加,但是当我尝试对其执行任何操作时,它会将其视为对象。

环顾四周,有一些类似的问题,但是当我在 JavaScript 中创建所有东西(而不是操作 DOM 中已经存在的东西)时,似乎必须有一种方法来做我想做的事。问题是我想不通。

编辑

我把我原来的例子简化了太多,没有完全理解这个问题。我已经更新了 jsFiddle以表明checkbox我需要能够添加一堆属性。因此,该checked属性将依赖于其他东西。因此,我需要$这样才能访问 jQuery 的prop函数(我认为)。

4

4 回答 4

2
var label = 'My label',
    checkbox = '<input type="checkbox">';
    listItem = '<li class="customise_option"><label>'+checkbox+' '+label+'</label></li>';

$('#mylist').append(checkbox);
$('#myotherlist').append(listItem);

这是jsfiddle。如果您要添加 HTML 标记,您只需要字符串;你在不远处。

于 2012-10-24T14:24:28.077 回答
2

checkbox是一个 jquery 对象,当你说string + checkbox你正在转换checkbox为一个字符串(它给出[object Object])然后附加它时。你也需要在append()那里使用。

于 2012-10-24T14:24:57.393 回答
0

发生这种情况是因为复选框是一个对象。使用此代码,工作

var label = '我的标签', checkbox = '', listItem = ''+checkbox+' '+label+'';

$('#mylist').append(checkbox); $('#myotherlist').append(listItem);

于 2012-10-24T14:26:38.593 回答
0

这是因为checkbox = $('<input type="checkbox">')返回一个 jquery 对象。

要么坚持使用 jquery 对象并使用text()等方法,要么坚持附加 HTML 的字符串表示。只是不要混合它。

于 2012-10-24T14:25:05.587 回答