1

我正在开发一个基于小部件/小工具的网站,用户可以在同一页面上同时拥有相同的小部件/小工具。例如,以下可能是小部件/小工具:

<div class="widget widget_1">
    <div class="header widget_header_1">
        <input type="text" class="textbox_1"/><input type="button" class="button_1"/>
    </div>
    <div class="content widget_content_1"></div>
    <div class="footer widget_footer_1"></div>
</div>

然后我可以一次在屏幕上显示其中的许多内容,这就是我使用类而不是 id 的原因。

在 document.ready 上,我运行一个生成默认值的函数widget_content_1。问题是当用户添加另一个相同的小部件时,默认功能会将所有widget_content_1小部件重置为默认值。如何阻止这种情况发生,如何仅将默认值应用于新添加的小部件而不影响其他小部件?

目前的代码如下所示:

// on document ready:
function_default();

...

function function_default() {
    $('.widget_content_1').empty().append("default content here");
}

有谁知道如何解决这个问题?

4

3 回答 3

1

您可以使用 jQuery:last选择器来选择最后一个(希望是新添加的)小部件,如下所示:

function function_default() {
    $('.widget_content_1:last').empty().append("default content here");
}

如果有一个小部件,那么这将选择第一个。

于 2012-05-14T11:35:40.213 回答
1

使用特定位置的选择器是一种解决方案,但如果最新的小部件并不总是在特定位置,则也容易出错。

我只需new在新创建的小部件中添加一个标志,在它创建的任何位置:

<div class="widget widget_1 new">
    ...
</div>

然后在 jQuery 中使用这个选择器:

function function_default() {
    $('.widget.new').empty().append("default content here").removeClass('new');
}

如果已创建 n 个新小部件,这也会将默认内容添加到所有小部件。

于 2012-05-14T11:38:37.827 回答
0

如果附加了新创建的,您可以使用:last选择器或.last( )函数吗?

例如:

$('.widget_content_1').last( ).empty( ).append('Default content')
于 2012-05-14T11:35:56.797 回答