我有一个带有按钮的表,它向表中添加了一些行并且它工作正常,我想通过jquery加载函数在另一个页面加载它们的父div但是当我加载它们时按钮不再工作
这是我的html代码,实际上我只是写了这个,但你明白了,也忽略了语法问题
<head>
<script>
$(function(){
$('#adder').click(function(){
$(this).siblings('table').append('<tr><td></td></tr>');
}
}
</script>
<head>
<body>
<div id="main">
<table> </table>
<a href="" id="adder"> </a>
</div>
</body>
在另一个页面中,虽然我在标题中有相同的jquery代码,但按钮不再起作用 这是我的另一页
<head>
<script>
function loader(){
$('#loader').load('a.php #main');
}
</script>
</head>
<body>
<div id="loader"></div>
</body>
我在div的末尾处理了广告jq代码,所以当它加载到另一个页面时,jq也会被加载
<div id="main">
<table> </table>
<a href="" id="adder"> </a>
<script>
$('#adder').click(function(){
$(this).siblings('table').append('<tr><td></td></tr>');
}
</script>
</div>
但仍无效
///////////////////////
另一个问题:
如果没有活动,我该如何使用直播? 例如,我有一个插件,它对页面div有一些影响,并在页面加载时调用
<head>
<script>
$(function(){
$('div').plugin(plugin settings);
})
</script>
</head>
现在,如果我在页面中添加一个div,我应该如何使用直播,以便我的新div获得该效果?
答案 0 :(得分:1)
对于动态创建的元素,您需要使用live
或delegate
,例如:
$('selector').live('click', function(){
// your code here...
}
答案 1 :(得分:0)
正如@matino指出的那样,您应该使用.live("click", function...)
代替.click(function...)
。
但是,你不应该期望将a.php中的脚本加载到你正在调用.load
的页面中,因为当你加载页面片段时该函数不会执行任何javascript。
来自jQuery docs:
注意:使用不带后缀选择器表达式的URL调用.load()时,会在删除脚本之前将内容传递给.html()。这将在丢弃之前执行脚本块。但是,如果使用附加到URL的选择器表达式调用.load(),则在更新DOM之前会删除脚本,这就是它们永远不会被执行的原因。
答案 2 :(得分:0)
$("body").delegate("#adder", "click", function(){
$(this).siblings('table').append('<tr><td></td></tr>');
});
http://www.alfajango.com/blog/the-difference-between-jquerys-bind-live-and-delegate/
大“啊哈!”对我来说,学习代表的时刻只是谷歌的代表定义。
del·e·gate [n。 del-i-git,-geyt; v.del-i-geyt]显示IPA名词, 动词,-gat·ed,-gat·ing。名词 的 1。指定代表他人或代表他人的人;副;代表,如政治公约。
这是“计算机科学”之一,在你掌握了这个概念或用谷歌搜索定义之前没有多大意义。在掌握术语之前,有助于了解定义。它被命名为“代表”有一个原因:p
在你的例子中,.load()添加的新创建的元素是那些太年轻而无法处理事件责任的“青少年”或“青少年”。因此,当您向他们请求事件时,浏览器会查看代理人以了解应该发生的事情。
要向新DOM元素添加插件(第二个问题),您必须在加载事件期间启用插件。
$("body").delegate("div", "load", function(this){
$(this).plugin( settings );
});