如何从特定行获取数据?

时间:2013-12-18 13:03:13

标签: javascript php jquery html

我有一个小的3x4表格,如JSFiddle.

所示

单击图像会发出警报,该警报基本上包含所单击图像的整个行数据。

然而,它无法在任何浏览器中使用(在Chrome 31.0.1650.63 m,IE 10和Firefox 25.0.1中)。我的代码如下所示。 “jquery-1.9.1.js”实际上this存在于与php文件相同的文件夹中。任何线索为什么它不在JSFiddle外工作?此外,如果我使用while($row = oci_fetch_array($result, OCI_ASSOC+OCI_RETURN_LOBS))

从Oracle数据库中获取数据,它是否会起作用
<html>
<head>
    <script src="jquery-1.9.1.js">
        $("img.print").click(function (event) {
            //Prevent the hyperlink to perform default behavior
            event.preventDefault();
            var $td = $(this).parent().closest('tr').children('td');
            var string1 = $td.eq(0).text();
            var string2 = $td.eq(1).text();
            var string3 = $td.eq(2).text();
            alert(string1+' '+string2+' '+string3);
        });
    </script>
</head>
<body>

PHP代码

<?php
echo '
<table border="1">
    <tr>
        <td>Data 1</td>
        <td>Data 2</td>
        <td>Data 3</td>
        <td><img src="https://www.gravatar.com/avatar/12e4484b5ae3e5f676efb7c18cbac643?s=24&d=identicon&r=PG" class="print"></img></td>
    </tr>
    <tr>
        <td>Data 4</td>
        <td>Data 5</td>
        <td>Data 6</td>
        <td><img src="https://www.gravatar.com/avatar/12e4484b5ae3e5f676efb7c18cbac643?s=24&d=identicon&r=PG" class="print"></img></td>
    </tr>    
    <tr>    
        <td>Data 7</td>
        <td>Data 8</td>
        <td>Data 9</td>
        <td><img src="https://www.gravatar.com/avatar/12e4484b5ae3e5f676efb7c18cbac643?s=24&d=identicon&r=PG" class="print"></img></td>
    </tr>
</table>
';
?>
</body>
</html>

1 个答案:

答案 0 :(得分:2)

您的代码不起作用,因为在代码运行时尚未构建DOM。

您应该将script标记放在结束body标记之前(这是一种不错的做法)或仅run your code when the DOM is ready

$(document).ready(function() {

   $("img.print").click(function (event) {
        //Prevent the hyperlink to perform default behavior
        event.preventDefault();
        var $td = $(this).parent().closest('tr').children('td');
        var string1 = $td.eq(0).text();
        var string2 = $td.eq(1).text();
        var string3 = $td.eq(2).text();
        alert(string1+' '+string2+' '+string3);
    });

});

另外,你包含jQuery的方式是错误的。带script的{​​{1}}代码不应包含内容。所以你需要两个src标签:

script

还有一点需要注意:永远不要忘记指定DOCTYPE,这非常重要!

<script src="jquery-1.9.1.js"></script>  
<script>
    $("img.print").click(function (event) {
        //...
    });
</script>