我是堆叠溢出的新手,这是我的第一个问题。请原谅我的任何错误。 这个问题更通用,但我试图寻找答案,却找不到答案。
假设我有一个页面,我正在使用jquery ui button()小部件来显示所有按钮。会发生什么是我为我页面上的所有按钮定义了一个特定的类。所以我可以指定$('。myButtonClass')。button();但每当我再次渲染具有按钮的局部视图时,我必须在局部视图中执行相同的操作。有没有办法可以全局指定按钮或任何元素的转换。
这是一个示例小提琴,可以在点击时添加按钮。但添加的按钮不是按钮小部件的转换(我不想使用克隆)。
$('.clsTest').button().click(function(){
$(this).after('<input type="button" value="Added" class="clsTest"/>');
});
这可能没有: - 1)为创建的所有按钮手动添加按钮小部件的css类。 2)使用Javascript跟踪DOM更改并对所有按钮元素执行转换。
感谢您的帮助!!!
答案 0 :(得分:3)
由于您正在寻找其他内容,为什么不在加载部分内容时触发自定义事件:
$('.clsTest').button().click(function(){
$(this).after('<input type="button" value="Added" class="clsTest"/>').trigger('addButtonUI');
});
$(document).bind('addButtonUI',function(){
$('.clsTest').button();
});
如果你触发你的活动并让文件听取它,那么你可以做任何你想做的事情。我本来可以添加更多按钮的功能,但这应该得到重点。
您要求的是,添加按钮时的某些事件....您需要自己想出并在添加按钮时触发它。有这样的:How to detect new element creation in jQuery?,它讨论了在将新元素添加到DOM时触发的特定事件。没有测试过,看起来它可能无法在IE上运行。
答案 1 :(得分:1)
我不是这个的忠实粉丝,但你可以轮询新的按钮。看看我的小提琴(听起来很有趣):
http://jsfiddle.net/lbstr/Hq97H/
使用您的示例,这看起来像:
setInterval(function(){
$('.clsTest').not('.ui-button').button();
}, 1000);
正如我所说,我不是这个的忠实粉丝。我理解这里对$.live
这样的东西的渴望,但我仍然认为在添加新内容时更好地初始化它。如果要对新内容进行ajax调用,只需在将其添加到DOM时进行初始化即可。
我的愚蠢的民意调查代码和$.live
(现已弃用)可能很方便,但它们的表现非常糟糕。只是我的两分钱。你比我更了解你的代码!