首页 新闻 会员 周边 捐助

Js,JQuery 求大侠解释一下.................

0
悬赏园豆:20 [已解决问题] 解决于 2014-03-28 09:07
$(function () {
    //绑定事件当元素获得焦点(在页面上此元素是两个单选框)
    $("#divNewsType input").focus(newsTypeSelected);
});

//跨域请求数据
function newsTypeSelected() {
    $.getJSON(
        "http://192.168.0.7:9993/Services/common.ashx?action=class&param=1&jsoncallback=?",
        function (json) {
            alert("ss");    //这个会死循环式的弹出
        }
    );
}

这段代码会不断的弹出"ss",就像死循环一样,如果去掉alert  替换为其它代码 比如$("id").html("ss");  则不会死循环

coder_wang的主页 coder_wang | 初学一级 | 园豆:193
提问于:2012-05-10 15:47
< >
分享
最佳答案
0

给你分析一下。

(1).获取焦点;

(2).执行fun;

(3).弹出alert;

(4).点击确定;

(5).获取焦点-继续回到第二步;

然后就死循环了。

收获园豆:10
Eric.luo | 小虾三级 |园豆:853 | 2013-05-17 14:30
其他回答(5)
0

我觉得应该是跟浏览器有关,有试过浏览器吗?

简单来说就是当alert的时候弹出窗口,有些浏览器视为已经失去焦点,当点alert中的确定后,视为input再次获得焦点,所以再次触发事件。

wdwwtzy | 园豆:114 (初学一级) | 2012-05-10 15:56

不是浏览器的问题  firefox 和 IE我都试过了...  只有getJson 处于focus方法体内的时候才会不断的弹出回调方法中的alert   

 

页面加载的时候执行getJson 就不会死循环

支持(0) 反对(0) coder_wang | 园豆:193 (初学一级) | 2012-05-10 16:06

@coder_wang: 本身焦点,就会不断的执行这个方法。

支持(0) 反对(0) icepy | 园豆:587 (小虾三级) | 2012-05-10 16:13

@飞舞轻扬在台北: alert 会导致失去焦点?  没有这说法吧

支持(0) 反对(0) coder_wang | 园豆:193 (初学一级) | 2012-05-10 16:46

@coder_wang: 我可没说。我说的是,它的光标在焦点上,就会不断的执行这个。

支持(0) 反对(0) icepy | 园豆:587 (小虾三级) | 2012-05-10 17:34

@飞舞轻扬在台北: 那么为什么直接在focus方法体中弹出alert就不会死循环执行呢?

支持(0) 反对(0) coder_wang | 园豆:193 (初学一级) | 2012-05-11 13:41
0

ie9下测试focus没有问题啊!?那你试试改成其它事件试试?比如click?

heqichang | 园豆:275 (菜鸟二级) | 2012-05-10 16:57

firefox 和 chrome  IE8都有问题...   任何一款有问题都是不行的...  如果不写alert就没问题,其它方法譬如click也没问题.  但click不能代替focus  而且我是想知道为什么,不是为了解决问题

支持(0) 反对(0) coder_wang | 园豆:193 (初学一级) | 2012-05-11 13:37

@coder_wang: 能把你用的JQuery版本还有所有测试浏览器的版本发下吗?

支持(0) 反对(0) heqichang | 园豆:275 (菜鸟二级) | 2012-05-11 14:35

@heqichang: JQ 1.7.1 浏览器版本 火狐11.0

支持(0) 反对(0) coder_wang | 园豆:193 (初学一级) | 2012-05-14 09:29
0

用console.log("ss"), alert会影响某些事件

dudu | 园豆:30778 (高人七级) | 2012-05-11 11:07

能否详细的解释一下呢,我了解到似乎alert阻塞...  但又不明白为什么focus中就会这样

支持(0) 反对(0) coder_wang | 园豆:193 (初学一级) | 2012-05-11 13:41

@coder_wang: 

focus时,alert;点击“关闭”,又focus,然后又alert...就这样循环起来了

支持(0) 反对(0) dudu | 园豆:30778 (高人七级) | 2012-05-11 14:28
0

alert(),当前焦点在alert上,确定完后,又回到  $("#divNewsType input")上,你又给它绑定了一个focus。。又alert。。死循环

收获园豆:5
nickel | 园豆:338 (菜鸟二级) | 2012-05-22 21:46
0

順樓上的,你把focus改成click 也不會死循環

你是不是頁面上就這一個input或者是 第一個就是這個input 當我們點擊完alert 按鈕 會焦點回到頁面

收获园豆:5
alanzengwei | 园豆:12 (初学一级) | 2012-05-29 10:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册