我有以下html文档的结构:
<frameset cols="25%,50%,25%">
<frame name="name1" src="frame_a.htm">
<frame name="name2" src="frame_b.htm">
</frameset>
frame_a.htm和frame_b.htm都返回带有select elments的表单:
<form>
<select id="select1">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select id="select4">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</form>
和
<form>
<select id="select2">
<option value="1">1</option>
<option value="2">2</option>
</select>
</form>
如何仅选择第一帧的所有选择器元素?
我尝试过以下选项:
jQuery("frame[name='name1'] select").each(function( index ) {
var elementID = jQuery(this).attr('id');
alert(elementID);
});
jQuery("frame[name='name1']").find('select').each(function( index ) {
var elementID = jQuery(this).attr('id');
alert(elementID);
});
jQuery("frame[name='name1']").contents().find('select').each(function( index ) {
var elementID = jQuery(this).attr('id');
alert(elementID);
});
但它没有帮助。 此外,我尝试提醒帧,它工作:
jQuery("frame[name='name1']").each(function( index ) {
alert("test1");
} );
但是当尝试提醒所有选择元素时,它不会:
jQuery( "select" ).each(function( index ) {
alert("test2");
});
注意:我正在使用以下代码加载代码:
<script>
jQuery(document).ready(function() {
//here I put JavaScript code
});
</script>
答案 0 :(得分:0)
尝试
jQuery("frame[name='name1']").contents().find('select').each(function( index ) {
var elementID = jQuery(this).attr('id');
alert(elementID);
});
答案 1 :(得分:0)
你应该试试
$("frame[name='name1']").contents().find("select")
答案 2 :(得分:0)
试试这个
#("frame[name='name1']).contents().find("select").each(function( index ) {
var elementID = jQuery(this).attr('id');
alert(elementID);
});
#("frame[name='name1']").find('select').contents().find("select").each(function( index ) {
var elementID = jQuery(this).attr('id');
alert(elementID);
});
答案 3 :(得分:0)
我发现了,如果我错了,请纠正我。
首先,我将代码放入主html文档的元素中。看起来像是:
<head>
<script type="text/javascript" src="lib/jquery-1.10.2.min.js"></script>
<script>
// put JavaScript code here
</script>
</head>
<frameset cols="25%,50%">
<frame name="name1" src="frame_a.htm">
<frame name="name2" src="frame_b.htm">
</frameset>
它没有帮助。甚至以下情况也无济于事(第二种情况下的帧被加载):
jQuery("frame[name='name1']").load( function() { ...}
二。我不得不将所有JavaScript代码移动到子html文件中。就我而言,他们是frame_a.htm
和frame_b.htm
。每个文件现在都有以下JavaScript代码:
jQuery(document).ready(function() {
for( var i = 0; i < parent.frames.length; ++i )
{
if( parent.frames[i].name == "name2" && self === parent.frames[i])
{
jQuery("select").each(function( index ) {
var elementID = jQuery(this).attr('id');
alert( elementID );
});
}
}
});
可能还有另一个更有效的解决方案,但是这个解决了我的问题。框架 - 是邪恶的,试着不要使用它们:)