3

私は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 の両方が、選択した要素を含むフォームを返します。

<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>
4

4 に答える 4

0

試す

jQuery("frame[name='name1']").contents().find('select').each(function( index ) {
     var elementID = jQuery(this).attr('id');
     alert(elementID);
});
于 2013-09-17T06:38:34.673 に答える
0

試してみてください

$("frame[name='name1']").contents().find("select")
于 2013-09-17T06:39:16.123 に答える
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>

そして、それは助けにはなりませんでした。以下でも役に立ちませんでした (2 番目のケースのフレームが読み込まれます)。

jQuery("frame[name='name1']").load( function() { ...}

2番。すべての JavaScript コードを子 html ファイルに移動する必要がありました。私の場合、それらはframe_a.htmframe_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 );
            });
        }
    }
});

おそらく別のより効果的な解決策がありますが、これで私の問題は解決しました。フレーム - 悪です。使用しないでください:)

于 2013-09-18T05:38:48.273 に答える
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);
});
于 2013-09-17T06:42:02.607 に答える