0

DKK

"id =" radio2 "value =" 75 "/>

whileループによって生成されたこれらのdivエントリがたくさんあるので、これを実現したいと思います。エントリ内の入力がクリックされたとき、エントリdivの背景画像を変更したいのですが、別のエントリdivで別のラジオを選択した場合..以前のすべての変更(以前の背景の変更など)を削除して現在のdivの背景を変更する..これが私がやろうとしたことです多分あなたが助けることができます..ここにjqueryがあります

$("input").click(function() {

             $(this).parent("div").toggle(function() {
             $(this).parent("div").css("background", "url(images/div_bg_hover.png)");
             }, function() {
             $(this).parent("div").css("background", "url(images/div_bg.png)");

             });

何かが誤動作しています..私はコードがまったく機能していないことを意味します..誰かが私を助けることができますか?ありがとうございました


私はこれを両方試しました:

$("input").click(function() {
                 $("input").each(function() {
                     if (this.checked) {
                         $(this).parent("div").addClass("highlight");
                     }
                     else {
                         $(this).parent("div").removeClass("highlight");
                     }
                 });
             });

$("input").click(function() {
                 $("input").each(function() {
                     if (this.checked) {
                         $(this).parent("div").css("background", "url(images/div_bg_hover.png)");
                     }
                     else {
                         $(this).parent("div").css("background", "url(images/div_bg.png)");
                     }
                 });
             });

何らかの理由で、バックグラウンドを変更せずにまったく機能しない場合は、上記のコードで何かを行う必要があるかもしれません。これは完全なスクリプトです。

 <script type="text/javascript">

         $(document).ready(function() {

             $(".left_navigation a:last").toggleClass('bolder');


             $("input").each(function() {
                 var element_value = $(this).val();
                 $(this).prev("p").append(" " + element_value + ",-");
             });


             $("input").click(function() {
                 $("input").each(function() {
                     if (this.checked) {
                         $(this).parent("div").addClass("highlight");
                     }
                     else {
                         $(this).parent("div").removeClass("highlight");
                     }
                 });
             });




         });

</script>
4

3 に答える 3

3

私が目にする最初の差し迫った問題は、jQuery});を貼り付けるのを忘れない限り、jQueryの最後にaがないことです。それはそれがエラーを投げる以外のことをするのを止めるでしょう...

これは、以前に試したものの簡略化されたバージョンです。少なくとも、デバッグが少し簡単になる可能性があります。

<script type="text/javascript">
$(document).ready(function(){
    $("input").click( function() { 
         $("input").parent("div").removeClass("highlight");
         $(this).parent("div").addClass("highlight");
      });
  });
</script>

とはいえ、あなたが以前に試したことについて明らかに間違っていることは何も見当たらないので、$("input")あなたが思っていることと一致しているかどうか疑問に思います。私はおそらく、健全性チェックのためにクリック機能内のいくつかのことを警告するでしょう。私は実際$(document).readyに、フレームワークのために入力の準備が整う前に発砲していることに気づきました...

于 2009-09-09T17:36:54.610 に答える
1

いくつかの問題があります:

  • Toggleを使用しており、Toggle関数は次のとおりです。

それらが表示されている場合、toggleはそれらを非表示にします(hideメソッドを使用)。それらが非表示の場合、toggleはそれらを表示します(showメソッドを使用)。

ラジオがチェックされているかどうか尋ねる必要があります

  • 他のradiodiv値を変更するには、各関数を呼び出す必要があります

  • $(document).ready()関数を呼び出す必要があります

サンプル(警告:Javascriptは私の最高の武器ではありません):

<script>
$(document).ready(function(){
    $("input").click( function() { 
         $("input").each(function() { 
             if (this.checked) {
                $(this).parent("div").css("background-color", "green") }
             else {
                $(this).parent("div").css("background-color", "red")}
          });
      });
  });
</script>

注:テストを改善するために背景色を使用しましたが、背景の使用法は適切です。

于 2009-09-09T18:19:16.570 に答える
0

画像を設定するには、「background」ではなく「background-image」を使用する必要がある場合があります。

編集:以前はjQueryの「background」cssプロパティに問題があったと思っていましたが、さまざまなブラウザでテストしたところ、間違っていたか、jQueryバージョンで修正されたようです。

于 2009-09-09T17:34:16.910 に答える