首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery按一下加载随机使用火狐

jQuery按一下加载随机使用火狐
EN

Stack Overflow用户
提问于 2016-01-14 22:58:47
回答 3查看 212关注 0票数 2

因此,我有几个带有onclick函数的“框”:

代码语言:javascript
运行
复制
<div class="box" onclick="load(1);return false;"></div>
<div class="box" onclick="load(2);return false;"></div>

onclick函数触发一个函数,该函数读取几个独立的.php文件(example1.php和example2.php)的内容。这些文件包含用字段集而不是div制作的其他框。

代码语言:javascript
运行
复制
function load(num){ 
$("#loadthis").load("example"+num+".php");
}

上面的函数改变了下面这个div的内容:

代码语言:javascript
运行
复制
<div id="loadthis">Load my fieldset boxes</div>

到目前为止,一切都正常,直到我单击字段集框。

当我单击它时,字段集的背景色应该改变,并且应该选择字段集中的收音机(因为css样式),但这两种情况都不会发生。但是,我仍然可以选择收音机时,点击收音机(不是框)。

我已经在IE和Chrome中测试过它,这段代码大部分时间都在那里工作。但在firefox中,我无法在50%的时间内选择字段集框。

我试着用.on(上课,但它给我同样的效果)做实验。

代码语言:javascript
运行
复制
$('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函数被调用:

代码语言:javascript
运行
复制
 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');
 });
 }

现在,我将尝试合并这些代码,看看这样做是否消除了bug,并且没有在单击时激活active类。

解决了:,我通过将这两个代码合并为1 click函数来解决这个问题。谢谢你们的帮助,但我还是不知道能不能换个办法?

EN

回答 3

Stack Overflow用户

发布于 2016-01-14 23:17:43

查看事件委托,如果您使用的是jQuery,这很容易

查看jQuery API for .on(

另外,您希望确保您使用的是不引人注目的JS,所以从HTML中取出它,将它作为事件侦听器放在一个.js文件中,并在DOM加载为关闭</body>标记之前的最后一件事情之后加载脚本。

票数 0
EN

Stack Overflow用户

发布于 2016-01-14 23:26:57

这应该是加载php文件内容的延迟。当你点击其中一个甚至需要时间的时候,它会起作用吗?

也许您应该使用阿贾克斯来加载php文件。顺便说一下,您可以使用GET或POST方法将数据发送到php文件。

您可以检查示例。

票数 0
EN

Stack Overflow用户

发布于 2016-01-16 21:39:37

如果您的函数在IIFE中是无效的,则内联js无法访问此函数。你说这有时管用,真奇怪..

IIFE是一个创建胶囊的包装函数,因此客户端不能在运行时修改您的脚本。看起来是这样的:

代码语言:javascript
运行
复制
(function(){
 /* code */ 
}()); 

创建js事件要好得多:

代码语言:javascript
运行
复制
on('body', 'click', '.box', function(e) {
    console.log(e.target); // this is the clicked list item
});

希望能帮上忙..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34801366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档