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") 都会出现未定义。任何建议将不胜感激,谢谢!

编辑 1:也许这与 this 关键字有关并且是范围问题?

编辑 2:我决定将 jQuery 代码移到每个的旁边 这似乎是一个糟糕的解决方案,但它绕过了任何范围界定问题并且有效。现在看起来像这样:

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

感谢您帮助我寻找正确的解决方案......如果我最终发现它,我会回来更新它,但现在 kludge 会站稳脚跟。

4

2 回答 2

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 回答
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 回答