0

首先,我使用的是 Codeigniter 框架。我已将 jquery.js 与 home.php 放在同一目录中。我的控制器将加载主视图。下面是我的家庭视图。如您所见,当我单击 id 为 more_info 的 td 时,我正尝试在新窗口中打开 google.com。但它不起作用。为什么?

<script src="jquery.js"></script>
<script type="text/javascript">
$("#more_info").click(function(){
  window.open("google.com");
  return false;
});
</script>

<?php foreach ($records as $row) : ?>

    <table border="1">

        <tr>
            <td id="more_info">More Info</td>
        </tr>
    </table>

<?php endforeach; ?>

在此处输入图像描述

4

4 回答 4

1

您正在使用相同的 td id,因此您应该使用该类而不是重复 id

<script src="jquery.js"></script>
<script type="text/javascript">
$(".more_info").click(function(){
  window.open("google.com");
  return false;
});
</script>

<?php foreach ($records as $row) : ?>

    <table border="1">

        <tr>
            <td class="more_info">More Info</td>
        </tr>
    </table>

<?php endforeach; ?>
于 2013-09-11T05:13:22.413 回答
0

为了澄清起见,我放了我的代码,这对我有用。

请注意脚本标签位于 html 的末尾(在正确创建所有元素之后)。

祝你好运!!!

<html>
<head>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=PT+Sans:400italic' rel='stylesheet' type='text/css'>  
<link href='http://fonts.googleapis.com/css?family=PT+Sans' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=PT+Sans:700' rel='stylesheet' type='text/css'>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/jquery-ui.min.js"></script>
</head>
<body>
    <table border="1">
        <tr>
            <td id="more_info">More Info</td>
        </tr>
    </table>
<script type="text/javascript">
$("#more_info").click(function(){
  window.open("http://google.com");
  return false;
});
</script>
</body>
</html>
于 2013-09-11T04:09:19.657 回答
0
  1. 您编写的脚本应该在页面完成之后。(你应该把你的脚本放在 php 代码之后)。

  2. 你的代码是错误的。

    2.1 循环不可编译。例如,选择一张表 + 一列。

    2.2 使用jquery的顺序还需要参考googleapi。

    2.3 你应该参考http://google.com,而不是 google.com (这显然会在你的网站上打开一个名为 google.com 的页面,我认为这不是你的意思。

祝你好运。

于 2013-09-10T21:18:24.077 回答
0

JavaScript 在加载后立即执行,即在该元素加载之前。因此,当 JavaScript 代码运行时,它会尝试将 click 事件处理程序附加到尚不存在的元素。

您可以通过使用文档的 ready 事件包装 JavaScript 代码来等待元素加载:

$(document).ready(function () {
    $("#more_info").click(function(){
        window.open("google.com");
        return false;
    });
});

或者,更短的版本:

$(function () {
    $("#more_info").click(function(){
        window.open("google.com");
        return false;
    });
});
于 2013-09-10T20:42:45.553 回答