Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php TypeError:$(…)不是函数_Php_Javascript_Jquery_Typeerror - Fatal编程技术网

Php TypeError:$(…)不是函数

Php TypeError:$(…)不是函数,php,javascript,jquery,typeerror,Php,Javascript,Jquery,Typeerror,我使用jQuery创建了一个页面,用户可以在其中单击表中的一个单元格,该表显示“delete”,它将发送一个ajax请求,根据该单元格的id从数据库中删除该条目,然后它将更改CSS以隐藏该单元格 我在创建/调整jQuery代码时创建了一个测试页面。这一页很好用。代码如下: <html> <head> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></sc

我使用jQuery创建了一个页面,用户可以在其中单击表中的一个单元格,该表显示“delete”,它将发送一个ajax请求,根据该单元格的id从数据库中删除该条目,然后它将更改CSS以隐藏该单元格

我在创建/调整jQuery代码时创建了一个测试页面。这一页很好用。代码如下:

<html>
<head>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){

  (function( $ ){
$.fn.deleterow = function(event) { 
  if (!confirm('Are you sure you want to delete this student?')) {
      return false;
  }
  var id = event.target.id;
  $.ajax({
          url: 'delete.php',
          type: 'GET',
          data: 'id=' + id,
      });
  $(this).parent().css('display', 'none');
}
})( jQuery );
});
</script>

</head>


<table border="1">
<tr>
<td>Cell 2, Row 2</td><td onclick="$(this).deleterow(event);" id="13376">delete</td>
</tr>
</table>

<html>

$(文档).ready(函数(){
(函数($){
$.fn.deleterow=函数(事件){
如果(!confirm('您确定要删除此学生吗?')){
返回false;
}
var id=event.target.id;
$.ajax({
url:'delete.php',
键入:“GET”,
数据:“id=”+id,
});
$(this.parent().css('display','none');
}
})(jQuery);
});
第2单元,第2行
现在,我正在努力让代码在实际的页面中工作,它将在其中使用。此页面有一个简短的表单,用户可以在其中选择自己的姓名和日期。这个表单发送一个ajax请求,返回div中的结果。返回的数据是一个表,这就是我试图让函数工作的地方。这个表附带了一个tablesorter脚本,还有我的函数

tablesorter仍然可以正常工作,但是当我单击包含“delete”的单元格时,什么也没有发生。我使用FireBug来研究这个问题,它给出了一个错误,“TypeError:$(…).deleterow不是一个函数”

以下是用户提交表单并将结果加载到div中的主页的代码:

<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type='text/javascript' src='jquery.tablesorter.js'></script> 
<script type='text/javascript'>
$(document).ready(function() 
    { 
        $('#myTable').tablesorter(); 
    } 
); 
</script>";
</head>

<body id="my-students">
<?php include 'header.php'; ?>

<?php include 'nav-tutoring.php'; ?>

<div id="content">
This is where you can view students whom you have assigned to tutoring.
<p>

You may change the way each column is sorted by clicking on the column header. 
<p>
<b>Select your name and the date to view students you have assigned for that day.</b>

<form> My form is here; removed to make post shorter  </form>

<script>
$('#submit').click(function() 
{
   $.ajax({
        type: 'POST',
        url: "mystudents.php",
        data: $('#name').serialize(),
        success: function(data) {
            $("#list").empty();
            $('#list').append(data);

        }
    });
                return false;
});
</script>

<div id="list"></div>

$(文档).ready(函数()
{ 
$('#myTable').tablesorter();
} 
); 
";
在这里,您可以查看分配给辅导的学生。

您可以通过单击列标题来更改每列的排序方式。

选择您的姓名和日期以查看您当天分配的学生。
我的表格在这里;删除以缩短帖子
$(“#提交”)。单击(函数()
{
$.ajax({
键入:“POST”,
url:“mystudents.php”,
数据:$('#name')。序列化(),
成功:功能(数据){
$(“#列表”).empty();
$(“#列表”)。追加(数据);
}
});
返回false;
});
以下是插入表单下方div的页面代码。这是tablesorter工作的页面,但我无法让我的函数工作。我还确保在该div所在的主页头中包含这些脚本库

<script src='//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js'></script>
<script type='text/javascript' src='jquery.tablesorter.js'></script> 
<script type='text/javascript'>
$(document).ready(function() 
    { 
        $('#myTable').tablesorter(); 

(function($) {
$.fn.deleterow = function(event) { 
  if (!confirm('Are you sure you want to delete this student?')) {
      return false;
  }
  var id = event.target.id;
  $.ajax({
          url: 'delete.php',
          type: 'GET',
          data: 'id=' + id,
      });
  $(this).parent().css('display', 'none');
}
})(jQuery);

});
</script>

<table id='myTable' class='tablesorter' border="1">
<thead><tr><th>ID Number</th><th>Last</th><th>First</th><th>Tutoring<br>Assignment</th><th>Assigning Teacher</th><th>Delete?</th></tr></thead><tbody>

<?php 
while($row = mysql_fetch_array($data)){
    echo "<tr><td>".$row['id']. "</td><td>". $row['last']. "</td><td>". $row['first']."</td><td>". $row['assignment']."</td><td>". $row['assignteacher']."</td><td onclick='$(this).deleterow(event);' id='".$row['pk']."'>Delete</td></tr>";

}
?>
</tbody></table>

$(文档).ready(函数()
{ 
$('#myTable').tablesorter();
(函数($){
$.fn.deleterow=函数(事件){
如果(!confirm('您确定要删除此学生吗?')){
返回false;
}
var id=event.target.id;
$.ajax({
url:'delete.php',
键入:“GET”,
数据:“id=”+id,
});
$(this.parent().css('display','none');
}
})(jQuery);
});
ID号LastFirstTutoring
分配分配教师删除?
测试控制台中是否加载了jQuery(检查
jQuery
变量)

您应该这样包装代码:

(function( $ ){
      $(document).ready(function(){

            $.fn.deleterow = function(event) { 
                  if (!confirm('Are you sure you want to delete this student?')) {
                        return false;
                  }
                  var id = event.target.id;
                  $.ajax({
                        url: 'delete.php',
                        type: 'GET',
                        data: 'id=' + id,
                  });
                  $(this).parent().css('display', 'none');
            }
      });
})( jQuery );
但最重要的是检查jQuery是否正确加载并解决它


希望它有助于测试控制台中是否加载了jQuery(检查
jQuery
变量)

您应该这样包装代码:

(function( $ ){
      $(document).ready(function(){

            $.fn.deleterow = function(event) { 
                  if (!confirm('Are you sure you want to delete this student?')) {
                        return false;
                  }
                  var id = event.target.id;
                  $.ajax({
                        url: 'delete.php',
                        type: 'GET',
                        data: 'id=' + id,
                  });
                  $(this).parent().css('display', 'none');
            }
      });
})( jQuery );
但最重要的是检查jQuery是否正确加载并解决它


希望对您有所帮助

尝试重写为常用的javascript函数

function deleterow(id) {...}
在php中

echo "<tr><td>".$row['id']. "</td><td>". $row['last']. "</td><td>". $row['first']."</td><td>". $row['assignment']."</td><td>". $row['assignteacher']."</td><td onclick='deleterow(".$row['id']. ")' id='".$row['pk']."'>Delete</td></tr>";
echo“$row['id']”、$row['last']”、$row['first']”、$row['assignment']”、.$row['assignteacher']”删除“;

尝试重写为常用的javascript函数

function deleterow(id) {...}
在php中

echo "<tr><td>".$row['id']. "</td><td>". $row['last']. "</td><td>". $row['first']."</td><td>". $row['assignment']."</td><td>". $row['assignteacher']."</td><td onclick='deleterow(".$row['id']. ")' id='".$row['pk']."'>Delete</td></tr>";
echo“$row['id']”、$row['last']”、$row['first']”、$row['assignment']”、.$row['assignteacher']”删除“;
这是由于:

<td onclick='$(this).deleterow(event);'
这是因为:

<td onclick='$(this).deleterow(event);'

最好使用jQuery的hander绑定这些事件,而不是onclick,这是一种糟糕的做法。例如:

$('#myTable').on('click', 'td', function(e) {
    $(this).deleterow(e);
});

最好使用jQuery的hander绑定这些事件,而不是onclick,这是一种糟糕的做法。例如:

$('#myTable').on('click', 'td', function(e) {
    $(this).deleterow(e);
});

首先,在document.ready中包含
$.fn.deleterow=function(event){
,没有任何意义。您应该将其移到该方法之外

就我个人而言,我会将代码更改为不依赖表中的内联事件处理程序。您使用的是jQuery,所以请利用它。使用事件bubling对您有利

将其添加到表级别,并侦听具有ID的td上的单击事件

$("table tbody").on("click", "td[id]", function(e){
   if (!confirm('Are you sure you want to delete this student?')) {
      return false;
  }
  var id = this.id;
  $.ajax({
          url: 'delete.php',
          type: 'GET',
          data: 'id=' + id,
      });
  $(this).parent().css('display', 'none'); 
});

首先,在document.ready中包含
$.fn.deleterow=function(event){
没有任何意义。您应该将其移到该方法之外

就我个人而言,我会将代码更改为不依赖表中的内联事件处理程序。您使用的是jQuery,所以请利用它。使用事件bubling对您有利

将其添加到表级别,并侦听具有ID的td上的单击事件

$("table tbody").on("click", "td[id]", function(e){
   if (!confirm('Are you sure you want to delete this student?')) {
      return false;
  }
  var id = this.id;
  $.ajax({
          url: 'delete.php',
          type: 'GET',
          data: 'id=' + id,
      });
  $(this).parent().css('display', 'none'); 
});

如果在页面加载时正确下载jQuery脚本,请在控制台中检查。您应该在
@Basic:中添加
type=“text/javascript”
属性。根据HTML4规范,这是必需的,但是。如果在页面加载时正确下载jQuery脚本,请在控制台中检查。您应该添加
type=”text/javascript“
属性到您的
@Basic:不是必需的。根据HTML4规范,它是必需的,但是。