0

我是堆栈溢出的新手,这是我的第一个问题。请原谅我的任何错误。这个问题更笼统,但我试图寻找答案但找不到。

假设我有一个页面,并且我正在为所有按钮使用 jquery ui button() 小部件。发生的事情是我为页面上的所有按钮定义了一个特定的类。所以我可以指定 $('.myButtonClass').button(); 但是每当我再次渲染有按钮的部分视图时,我必须在部分视图中做同样的事情。有什么方法可以全局指定按钮或任何元素的转换。

这是一个示例 Fiddle,它在单击时添加按钮。但是添加的按钮不是按钮小部件的转换(我不想使用克隆)。

http://jsfiddle.net/wjxn8/

$('.clsTest').button().click(function(){
    $(this).after('<input type="button" value="Added" class="clsTest"/>');
});

这是否可能没有:- 1)为所有创建的按钮手动添加按钮小部件的 css 类。2) 使用 Javascript 跟踪 DOM 更改并为所有按钮元素执行转换。

谢谢你的帮助!!!

4

2 回答 2

3

既然您正在寻找其他东西,为什么不在加载部分或其他内容时触发自定义事件:

$('.clsTest').button().click(function(){
    $(this).after('<input type="button" value="Added" class="clsTest"/>').trigger('addButtonUI');
});
$(document).bind('addButtonUI',function(){
    $('.clsTest').button();
});

http://jsfiddle.net/wJXN8/3/

如果您触发您的事件并让文档监听它,那么您可以做任何您想做的事情。我也可以在那里添加更多按钮,但这应该能说明问题。

您要的是什么,添加按钮时的一些事件....您需要自己想出并在添加按钮时触发它。有这个:如何在 jQuery 中检测新元素的创建?它讨论了将新元素添加到 DOM 时触发的特定事件。没测试过,好像在IE上不行。

于 2013-04-13T04:34:56.770 回答
1

我不是这个的超级粉丝,但你可以投票寻找新的按钮。看看我的你的小提琴叉子(听起来很有趣):

http://jsfiddle.net/lbstr/Hq97H/

使用您的示例,这看起来像:

setInterval(function(){
    $('.clsTest').not('.ui-button').button();
}, 1000);

正如我所说,我不是这个的忠实粉丝。我理解对像这里这样的东西的渴望$.live,但我仍然认为在添加新内容时初始化它会更好。如果您正在对新内容进行 ajax 调用,只需在将其添加到 DOM 时对其进行初始化。

我愚蠢的轮询代码和$.live(现在已弃用)可能很方便,但它们的表现非常糟糕。只是我的两分钱。你比我更了解你的代码!

于 2013-04-13T04:30:07.613 回答