【发布时间】:2016-01-14 22:58:47
【问题描述】:
所以我有几个带有onclick 功能的“盒子”:
<div class="box" onclick="load(1);return false;"></div>
<div class="box" onclick="load(2);return false;"></div>
onclick 函数触发一个函数,该函数读取几个单独的 .php 文件(example1.php 和 example2.php)的内容。 这些文件包含使用 fieldset 而不是 div 制作的其他框。
function load(num){
$("#loadthis").load("example"+num+".php");
}
上面的函数正在改变这个div的内容:
<div id="loadthis">Load my fieldset boxes</div>
到目前为止一切正常,直到我单击字段集框。
当我单击它时,字段集的背景颜色应该会改变,并且字段集中的单选也应该被选中(因为 css 样式),但这两种情况都不会发生。但我仍然可以在单击收音机(而不是框)时选择收音机。
我已经在 IE 和 Chrome 中对其进行了测试,这段代码大部分时间都在那里工作。 但在 Firefox 中,50% 的时间我无法选择字段集框。
我尝试使用 .on( 类,但效果相同。
$('fieldset.type-a').children('.row').children('.box.col-4').on("click", load);
function load(){
var index = $('fieldset.type-a').children('.row').children('.box.col-4').index( this );
index+=1;
$("#loadthis").load("fs"+index+".php");
}
好的,经过一番搜索,我发现在另一个被调用的 .js 文件中已经有一个 onclick 函数:
function handleStep2() {
$('.step-form-2 input[type=radio]').change(function () {
$(this).closest('fieldset').find('.box').removeClass('active');
$(this).closest('.box').addClass('active');
$(this).attr('checked', 'checked');
});
$('.step-form-2 .select-box .box').click(function () {
$(this).find('input[type=radio]').trigger('change');
});
}
我现在将尝试合并代码,看看是否可以消除点击时未激活活动类的错误。
已解决:我确实通过将两个代码合并为一键式功能来解决它。感谢您的所有帮助,但我仍然想知道这是否可以通过不同的方式完成?
【问题讨论】:
-
您的描述写得很好,但是场景有点太复杂了,无法理解。我建议在jsFiddle.net 创建一个示例场景,保存它,然后在您的问题中发布 URL。这将使我们的回答者能够更好地理解问题,并为我们提供一个尝试解决方案的环境。
-
所以...动态加载的框不响应 jquery 调用?你应该试试 $('body').on('click', '#loadthis', function() {});
-
'委托事件的优点是它们可以处理来自以后添加到文档中的后代元素的事件。 jquery 文档
-
在 jsFiddle 或 codepen 上提供我们可以在这些浏览器中验证的示例
-
如果在 #loadthis 中硬编码 php 文件(字段集)的输出会发生什么?这工作正常吗?你能在小提琴中展示它吗?因为从目前的小提琴来看,它不清楚您所面临的预期行为或问题是什么。
标签: javascript jquery html css