jquery 操作iframe

djdy_fei 2014-01-06 02:13:21
在主窗口iframe一个子页面、子页面里有4个raido标签、
要在主页面里操作radio、

alert($(window.top.frames["qual"].document).find("input[type='radio']").size())
alert($(window.top.frames["qual"].document).find("input[type='radio']:checked").size())

在IE里打印的是4和0、始终找不到选中的那一个、把input[type='radio']:checked换成ID又能找到、
chrome和FF里是4和1,都是正确的、
用的是IE8、jQuery是1.8、
...全文
187 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
djdy_fei 2014-01-07
  • 打赏
  • 举报
回复
那这个肯定就是:checked选择器的问题了。 帮你查了下,
$('input:checked[name=input]')
这样子试试看可不可以。[/quote] 还是不行吖 、
孤飞不倦 2014-01-07
  • 打赏
  • 举报
回复
引用 7 楼 chenfei3023 的回复:
[quote=引用 6 楼 imi233 的回复:] 看一下调试信息,确定iframe的document获取到了?
取到了、子页面的任何元素都能取到、就是选中那个radio取不到、换成ID也能取到、[/quote] 那这个肯定就是:checked选择器的问题了。 帮你查了下,
$('input:checked[name=input]')
这样子试试看可不可以。
djdy_fei 2014-01-07
  • 打赏
  • 举报
回复
引用 6 楼 imi233 的回复:
看一下调试信息,确定iframe的document获取到了?
取到了、子页面的任何元素都能取到、就是选中那个radio取不到、换成ID也能取到、
孤飞不倦 2014-01-07
  • 打赏
  • 举报
回复
看一下调试信息,确定iframe的document获取到了?
djdy_fei 2014-01-07
  • 打赏
  • 举报
回复
引用 4 楼 imi233 的回复:
你可以在input添加class试试
('input.radioClass:checked').size()
看这样能获取到么。
这样都获取不到、
shenzhenNBA 2014-01-07
  • 打赏
  • 举报
回复
引用 2 楼 chenfei3023 的回复:
[quote=引用 1 楼 shenzhenNBA 的回复:] 试一下.... 子页面里有4个raido标签,给这四个radio起同一个名字,比如:name="myRadio" alert($(window.top.frames["qual"].document).find("input[name='myRadio']").size()) alert($(window.top.frames["qual"].document).find("input[name='myRadio']:checked").size()) //当然后面一个你首先选中一个radio 或者给你的iframe设定一个ID,比如id = "iframe" alert($("#iframe1").contents().find("input[name='myRadio']").size()) alert($("#iframe1").contents().find("input[name='myRadio']:checked").size())
你说的这些都有、也都试过、结果还是那样、chrome和FF下可以、IE下就是找不到、[/quote] 那就在IE下自己用JS写,假设如下 <iframe name='iframe1' id='iframe1' src='your_web_page.htm'></iframe> 子页面含有相应的radio,在主页面里面可以这样 <script language="javascript" type="text/javascript"> function test(){ var len = document.getElementById('iframe1').contentWindow.getElementsByName('iframe1').length; var radioList = document.getElementById('iframe1').contentWindow.getElementsByName('iframe1'); var selectValue='select object value is : '; for(var i=0;i<radioList.length;i++){ if(radioList[i].checked){ selectValue += radioList[i].value; break; } } alert('len = ' + len + ' , ' + selectValue); } </script> 上面是测试例子,其他的修改成你需要的方法,
孤飞不倦 2014-01-06
  • 打赏
  • 举报
回复
你可以在input添加class试试
('input.radioClass:checked').size()
看这样能获取到么。
孤飞不倦 2014-01-06
  • 打赏
  • 举报
回复
又是IE...IE里面的好多问题都无解的,只能写两套js/css.
djdy_fei 2014-01-06
  • 打赏
  • 举报
回复
引用 1 楼 shenzhenNBA 的回复:
试一下.... 子页面里有4个raido标签,给这四个radio起同一个名字,比如:name="myRadio" alert($(window.top.frames["qual"].document).find("input[name='myRadio']").size()) alert($(window.top.frames["qual"].document).find("input[name='myRadio']:checked").size()) //当然后面一个你首先选中一个radio 或者给你的iframe设定一个ID,比如id = "iframe" alert($("#iframe1").contents().find("input[name='myRadio']").size()) alert($("#iframe1").contents().find("input[name='myRadio']:checked").size())
你说的这些都有、也都试过、结果还是那样、chrome和FF下可以、IE下就是找不到、
shenzhenNBA 2014-01-06
  • 打赏
  • 举报
回复
试一下.... 子页面里有4个raido标签,给这四个radio起同一个名字,比如:name="myRadio" alert($(window.top.frames["qual"].document).find("input[name='myRadio']").size()) alert($(window.top.frames["qual"].document).find("input[name='myRadio']:checked").size()) //当然后面一个你首先选中一个radio 或者给你的iframe设定一个ID,比如id = "iframe" alert($("#iframe1").contents().find("input[name='myRadio']").size()) alert($("#iframe1").contents().find("input[name='myRadio']:checked").size())

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧