1

ページ全体のコンテンツを置き換えようとしています(作品)+ style.cssへのリンクをgame.cssに、クエリで置き換えます

$.get('/games/14', function(data){  var $page = $(data);
    $('head').append('<link rel="stylesheet" href="style2.css" type="text/css" />');
    //$('#layout').empty().append($page);
    $('body').empty().append($page);
})

「style.css」を「game.css」に変更しようとしてもできないようですが、Jquery Guru はこれを達成する方法を知っていますか? どうも !

更新:以下の提案を試してみましたが、まだ問題があります。これは私が現在使用しているものです(.cssファイルの置き換えはありません)

  $.get('/games/14', function(data){
$("link[href='style.css']").attr({href: 'game.css'});
var $page = $(data);
$('body').empty().append($page);
})
4

4 に答える 4

2

ほら、これをテストしたところ、うまくいきました。

<!DOCTYPE HTML>
<html>
<head>
    <script src="jquery-1.7.2.min.js"></script>
    <link href="/assets/frontend.css" media="screen" rel="stylesheet" type="text/css" />
</head>
<body>
    <script>
        $("link[href='/assets/frontend.css']").attr('href', '/assets/game.css');
    </script>
</body>
</html>

以下のコメントに答えるために、Firebugを使用してテストしました。[コンソール] タブを使用すると、最初にassets/frontend.cssをロードしようとし、JS を実行してから、assets/game.cssをロードしようとしたことがわかります。

読み込み中

次に、firebug の HTML タブで DOM を確認したところ、link 要素の href 属性が更新されていることがわかりました。

ここに画像の説明を入力

于 2012-07-16T22:58:55.350 に答える
1

href 属性「style.css」を使用して link 要素をターゲットにし、その要素の href 属性を「game.css」に置き換えます。

$("link[href='style.css']").attr({href: 'game.css'});
于 2012-07-16T22:24:41.527 に答える
1

jQuery のattr()関数を使用して、href を変更できます。

$("link[href=style.css]").attr('href', 'game.css');

おそらく、使用したいより堅実なセレクターがあるでしょうが、それで十分です。

于 2012-07-16T22:25:41.150 に答える
1

href他の回答で提案されている属性の置換は、さまざまなブラウザーで一貫して処理されません (つまり、リフロー/再レンダリングをトリガーしない場合があります)。代わりに、元のスタイル要素を削除し、目的の新しい要素をhrefその場所に挿入する必要があります。jQuery でこれを行う直感的な方法:

$('link[href$="style.css"]').replaceWith('<link href="game.css" ... ></link>');
于 2012-07-16T23:08:14.810 に答える