0

PHPを使用してループで一連のjavascript.click関数を作成しようとしています:

$("document").ready(function()
{    


    $('#nav > li > a').click(function(){
    if ($(this).attr('class') != 'active'){
      $('#nav li ul').slideUp();
      $(this).next().slideToggle();
      $('#nav li a').removeClass('active');
      $(this).addClass('active');
    }
    else{
      $(this).next().slideToggle();
    $(this).removeClass('active');
    }
    })


<?php

        include_once '../admin/Clases/sql.php';
        $sql = new sql();

        $res = $sql->check("products","*","1");
        $javascript = "";
        if($res["ok"]){

            foreach($res["tabla"] as $fila)
            {
             $javascript .="$('#btn_".fila[2]."').click(function(){$('#prod_img').css('background-image','url(".fila[3].")');})";

            }
            echo $javascript;
        }

    ?>

しかし、実行すると機能しません。私は何を間違っていますか?

4

1 に答える 1

0

JavaScript文字列の最後にセミコロンがないようです。

$javascript .="$('#btn_".fila[2]."').click(function(){$('#prod_img').css('background-image','url(".fila[3].")');});";
// --------------------------------------------------------------------------------------------------------- HERE ^

また:

  • php変数$を忘れました$fila
  • php文字列で一重引用符を使用し、js内で引用符を反転(またはエスケープ)する必要があります。二重引用符の中で、phpは変数を評価しようとします-で始まるものは何でも$(そしてjQuery関数が何で始まるかを推測します...)。

したがって、これは最終的には機能するはずです。

$javascript .= '$("#btn_'.$fila[2].'").click(function(){$("#prod_img").css("background-image","url('.$fila[3].')");});';

しかし、それは地獄のように醜いです。phpからjsコードを書く代わりに、データをJSONとしてjsに渡すことで、この問題に取り組みます。

于 2013-01-16T19:49:16.340 に答える