13

私は次のようなものを持っています:

        <iframe id="frame" width="200" height="150" 
    src="http://www.youtube.com/embed/GiZGEFBGgKU?rel=0&
amp&iv_load_policy=3;autoplay=1" frameborder="0" allowfullscreen></iframe>

そして、jqueryを使用して幅と高さを変更したい:

$("#frame").setAttribute("width", "50");
$("iframe").setAttribute("width", "31");

それらのどれも機能しません

4

5 に答える 5

29

Sarfraz が既に指摘したように、jquery セレクター オブジェクトの属性を設定する正しい方法は、attr("attrName", "attrVal"). うまくいかなかった理由は、setAttribute説明する価値のあるものです。私はこの点に何度も頭を悩ませてきました。

jquery のセレクター構文を使用すると、jquery で定義されたオブジェクトが返されます。これは基本的に、セレクターが一致したすべての要素のリストです。1 つの要素 (常に id セレクターの場合) または複数の要素に一致するかどうかにかかわらず、返されるオブジェクトは要素リストであり、単一の DOM オブジェクト (単一の要素など) ではありません。 setAttribute実際のHTMLElementオブジェクトのメソッドです。

これが理由です

$("#frame")[0].setAttribute("width", "200");

動作しますが、

$("#frame").setAttribute("width", "200");

ではない。HTMLElementリスト内のオブジェクトにはありますが、jquery 要素にはそのメソッドがありません。

(何らかの理由で) ネイティブHTMLElementメソッド (または入力など、セレクターが返す要素に共通のメソッド) を使用したい場合は、次のeach()ように jquery のメソッドを使用できます。

 // Set all iframes to width of 250
 $("iframe").each(
     function(index, elem) {
         elem.setAttribute("width","250");
     }
 );

メソッドのeach()コールバックには 2 つのオプション パラメータを渡すことができます。1 つ目はセレクタ リスト内の要素のインデックス、2 つ目はネイティブ DOM メソッドを呼び出すことができる実際の DOM 要素です。

私が言ったように、ネイティブ メソッドで jquery のセレクターの結果を複数回使用する方法を理解しようとして本当にイライラしましたsetAttribute()。同等のjqueryが見つからない場合に実際に機能させるために。

于 2012-04-10T05:51:23.117 に答える
3

どうですか:

$('#frame').width(x)

また

$('#frame').attr("width","50");
于 2012-04-10T05:18:01.773 に答える
2

1) 使用attr:

$("#frame").attr("width", "31");

2) DOM オブジェクトの使用:

$("#frame")[0].setAttribute("width", "50");
于 2012-04-10T05:16:38.923 に答える
0

編集:あなたがIDを持っているのを見ました。コードが実際に実行されているかどうかを確認できますか? トリガーされているようなものですか?また、に変更allowfullscreenしてみてくださいallowfullscreen="true"

于 2012-04-10T05:18:32.337 に答える