我正在使用这个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>";
感谢您帮助我寻找合适的解决方案......如果我最终发现它,我会回来更新此信息,但现在这个问题仍然存在。
答案 0 :(得分: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>";
答案 1 :(得分:0)
鉴于提供的代码,无法确定地调用“this”的上下文。你肯定试图用它来引用一个DOM元素,但它返回“undefined”,因为“this”实际上指的是没有“url”属性。如果您为A标签分配了一个类或ID,那么您可能会获得更多成功......
这是一些经过修改的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});
我没有测试过,但我认为这对你有用。让我知道它是怎么回事。