1

私はこの jQuery プラグインを使用しています: http://swip.codylindley.com/popupWindowDemo.htmlは素晴らしいようです。私の jQuery コードは、在庫テーブルのテーブル行に添付されており、次のようになります。

$("tr").popupWindow({windowURL:$(this).attr("url"),windowName:'Details', centerScreen: true});

HTML (PHP から) は次のようになります。

echo "<tr url=\"details.php?id=$idNum\"><td>$idNum</td>"; 

何らかの理由で、式 $(this).attr("url") が未定義として表示されます。任意の提案をいただければ幸いです、ありがとう!

EDIT 1:おそらくこれは this キーワードに関連しており、スコープの問題ですか?

編集 2: jQuery コードをそれぞれの隣に移動することにしました。これはひどい解決策のように思えますが、スコーピングの問題を回避して機能します。次のようになります。

echo "<tr id=\"$idNum\"><td>$idNum</td>";
echo "<script type=\"text/javascript\">
    $('#$idNum').popupWindow({
    windowURL:'details.php?tag=$idNum'
    });</script>";

適切な解決策を探すのを手伝ってくれてありがとう....最終的にそれを発見したら、戻ってきてこれを更新しますが、今のところ、クラッジはそのままです。

4

2 に答える 2

0

非標準の属性を作成しないでください。ものを保存するために作成されたHTML5 のdata-属性を使用します。

$("tr").popupWindow({windowURL:$(this).data("url"),windowName:'Details', centerScreen: true});

PHP を変更します。

echo "<tr data-url=\"details.php?id=$idNum\"><td>$idNum</td>"; 
于 2012-04-25T20:01:59.450 に答える
0

提供されたコードを考えると、「this」が呼び出されているコンテキストを確実に判断することはできません。あなたは間違いなくそれを使用してDOM要素を参照しようとしていますが、「this」が実際に参照しているものには「url」属性がないため、「未定義」を返しています。クラスやIDをAタグに割り当てれば、もう少し成功するかもしれません...

これは、いくつかの変更された HTML (PHP から) です。

echo "<tr><td><a id=\"$idNum\" href=\"details.php?id=$idNum\">$idNum</a></td>";     

jQuery コードは次のとおりです。

$("#myRow").popupWindow({windowURL:$("#" + $idNum).attr("href"),windowName:'Details', centerScreen: true});

私はそれをテストしていませんが、これでうまくいくと思います。それがどうなるか教えてください。

于 2012-04-25T20:27:29.420 に答える