2

シナリオ: index.html と呼ばれる 1 つの大きなかさばるページで、すべてがここで行われます。インデックスには 10 個のタブ (jquery ui タブ) があります。jquery ui のアコーディオン ウィジェットを使用すると、各タブには平均で 3 ~ 5 個のサブカテゴリが含まれるようになりました (スパム防止のために画像を投稿することを拒否されましたが、レイアウトがどのように見えるかを理解していただければ幸いです)。ここから問題が始まります。iframe はこれらすべてに存在するため、各 iframe に約 5 ~ 10 個のテキスト フィールドを持つ 25 ~ 30 個の iframe を見ています。私がやりたいことは、これらのテキスト フィールドを有効/無効にするだけです。

簡単に言えば、これは次の方法で実行できることを知っています。

$('input[type=text]').attr("disabled", "disabled");

$('input[type=text]').removeAttr("disabled")

インデックスのボタンは関数をトリガーします:

 $(".frameClass").each(function () {
                console.log("i found a frame called " + this.name);
});

クリックですべての入力テキスト フィールドを有効にするには、どうすればこの接続を確立できますか? iframe 内に関数を作成して、その内から呼び出してみました。.each()

this.unlockFields();

どこにも行きませんでした、何か考えはありますか?

4

2 に答える 2

1

.contents()次のように、iframe 内の要素にアクセスするために使用する必要があります。

$(".frameClass").each(function () {
     $(this).contents().find('input[type=text]').attr('disabled', 'disabled');
});

メインページと同じドメインにあるページが iframe に含まれていることを考えると、それはあなたが望むことをするはずです。

于 2012-10-15T19:06:36.357 に答える
0

これを試して:

var iframes = $('iframe');
iframes.each(function(index, iframe) {
    var iframe_content = ($.browser.msie ? $(iframe.contentWindow.document) : $(iframe.contentDocument));
    iframe_content.find('input[type=text]').attr({disabled:'disabled'});
});
于 2012-10-15T19:13:53.840 に答える