我在stackoverflow上读了很多东西,但没有什么能帮助我:(
我有这个HTML表,由ajax请求加载:
<table class="table table-striped table-hover choix_annonce_table">
<thead>
<tr>
<th>Sélection</th>
<th>Visuel</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="radio" value="45" name="idAnnonce"></td>
<td><img alt="Annonce 1" src=""></td>
</tr>
<tr>
<td><input type="radio" value="46" name="idAnnonce"></td>
<td><img alt="Annonce 2" src=""></td>
</tr>
</tbody>
</table>
我尝试检测何时检查了radiobutton,但没有以下问题有效(在我的“主”页面中包含的js文件中):
$(document).ready(function() {
$("input[name=idAnnonce]").click(function(){
alert("xx");
});
});
OR
$(document).ready(function() {
$("input[name=idAnnonce]:radio").change(function () {
alert("xx");
});
});
你有想法吗?
编辑:当我使用ajax将JS直接加载到我加载的表中时,它可以工作。 为什么?
答案 0 :(得分:3)
这是因为.click()
和.change()
方法以及所有其他事件处理程序仅在事件附加时上显示的元素上观察这些事件
要解决此问题,请使用以下方法:
$('input[name=idAnnonce]').change(function() {
// ...
});
使用类似的东西:
/* Use 'body' or any element that will contain the form */
$('body').on('change', 'input[name=idAnnonce]', function() {
// ...
});
这将监视传递到正文的点击事件,并且只调用与选择器匹配的函数。
答案 1 :(得分:1)
如果你的javascript被直接加载到html文件中,那么它就会在加载和解析html文件时被执行。当javascript位于单独的文件中时,需要调用它。您可以通过执行“onload”函数作为body标记语句的一部分来完成此操作。你的html的那部分缺失了,所以当你的表加载时,你是否真的在加载任何东西时都不清楚。
您还可以在ajax加载结束时通过回调执行这些事件监视器。
答案 2 :(得分:1)
通过ajax加载表时,您需要通过ajax调用引入javascript。这意味着进来的表还应该包含引用该表的javascript。父页面上的DOM不知道该表,因此父页面上的javascript将不会对新内容起作用。
答案 3 :(得分:0)
$(document).ready(function() {
$('input[type=radio][name=idAnnounce]').change(function(evt) {
console.log(evt.target.value)
});
});
您使用的选择器是错误的。
以上代码应该有帮助
欢呼声