在动态生成的HTML上使用插件
Using a plugin on dynamically generated HTML
我正在运行时生成一些HTML,我想知道如何使插件在新创建的HTML上工作。我有一个看起来很像的东西:
<input type="text" class="SomeClass">
<div id="Test"></div>
<script>
function Start() {
setTimeout(function () {
$('#Test').html('<input type="text" class="SomeClass">');
}, 1000);
}
$(".SomeClass").SomePlugin();
$(Start);
</script>
input元素具有插件的所有功能,但当我在Testdiv中添加HTML时,其中的input元素并没有按预期工作。如何在动态生成的HTML上使用插件?
为了让插件使用新创建的元素,您需要在这些元素上初始化插件才能工作。有几种方法可以做到这一点,例如在添加新元素时再次调用它。
如果你只是想避免更改代码并添加它,你可以覆盖jquery html来检查你是否使用SomeClass添加了一个元素,并自动调用插件:
(function($)
{
var oldhtml = $.fn.html; //store old function
$.fn.html = function() //override html function
{
var ret = oldhtml.apply(this, arguments); // apply jquery html
if(arguments.length){
if(ret.find(".SomeClass").length){
ret.find(".SomeClass").SomePlugin(); // call plugin if the html included an element with .SomeClass
}
}
return ret;
};
})(jQuery);
$.fn.SomePlugin = function() {
$("body").append("plugin activated <br/>");
}
function Start() {
setTimeout(function() {
$('#Test').html('<input type="text" class="SomeClass">');
$('#Test').html()
}, 1000);
}
$(".SomeClass").SomePlugin();
$(Start);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="SomeClass">
<div id="Test"></div>
我选择了使用jQuery promise的解决方案。这是Fiddle
HTML(你的基本副本):
<input type="text" class="SomeClass">
<div id="Test"></div>
Javascript:
$.fn.SomePlugin = function(){
$(this).val("plugin activated");
}
function Start() {
alert('hi from start');
$('#Test').html('<input type="text" class="SomeClass">');
return $.when();
}
$(document).ready(function(){
Start().then(function () {
alert('hi from done');
$(".SomeClass").SomePlugin();
});
});
我对$(Start)有一些问题,所以我选择了document.ready方法。唯一真正的区别是Start返回$.when(SO Post Here),而我在调用开始后加上一个'then'。这允许页面进行设置,然后您可以运行所需的任何插件,并确保在插件尝试操作它们之前,所需的元素已在DOM中。
相关文章:
- 将插件制作的Javascript包含到html按钮中
- 在动态生成的HTML上使用插件
- jQuery美国地图插件-为每个点击状态添加unique.html
- 我该如何为video.js制作一个插件,在HTML标题中添加和删除三角形
- 使用 Ajax 在 html 加载后调用 jquery 插件
- 在D3插件sankey.js和html代码之间定义源代码
- 我该如何访问由gullow灰质插件创建的数据对象(当使用nunjucks编译html文件时)
- 希望看到具有与TinyMCE Codesample插件相同格式的渲染HTML
- 带有html Webpack插件的Webpack,全局安装时出错
- 渲染由路由器中的html webpack插件生成的文件
- 如何使用mozilla插件sdk API从响应中提取html页面
- 有没有一个Wordpress插件可以让我展示HTML/JS/CSS的例子
- 访问下载的html文件中的cordova插件
- ckEditor插件iframe对话框设置html输入
- 页面加载时的插件和html - 元素到处都是的瞬间
- js/jquery/other library插件来转换HTML->XML
- 如何防止作用在 html 锚点上的 JS 插件跳到顶部
- 我需要一个javascript/html插件,它允许我在不编辑文件的情况下发布新闻.html
- 使用 JS 实现 HTML 最小化器插件
- 如何在没有导航、菜单等按钮的弹出窗口中打开/data文件夹中的firefox插件html文件