jQuery函数没有被调用onclick

时间:2014-04-16 19:16:05

标签: jquery

我有一个jQuery函数,当点击一个按钮(通过php生成)时触发,同样的功能对我来说也是在用php创建的链接上工作,但由于某种原因,这个不是偶数显示错误,我检查了firebug,似乎没有调用函数。

我的页面底部有脚本:

<script src="js/estadoLabs.js"></script>  on the bottom of my index page, so it should be working.

功能本身就是这个:

$(".btnEliminar").click(function() {
  var idAttr = $(this).attr('id');
  var id = parseInt(idAttr.substring(12));

  var request = $.ajax({
    url: "includes/functionsLabs.php",
    type: "post",
    data: {

    'call': 'displayInfoLabs',
    'pId':id},

    dataType: 'html',

  success: function(response){
    $('#info').html(response);
    }
  });
});

我很确定php函数不应该受到责备,因为在SQL上运行$ query会对我想要的表进行更改。以防万一这是html生成的代码片段,其中包含按钮(它们已成功显示)。

<input type = "button" value = "Eliminar"  class= "btnEliminar" id = "btnEliminar-'.$row['idlab'].'" />

我过了几次但是我没有找到任何明显的错误,任何帮助都会非常感激。非常感谢。

编辑:PHP

基本上要归功于PollyGreek和Rafael jQuery的工作原理,就像现在点击按钮时一样,它显示了我:

警告:mysql_fetch_assoc()期望参数1为资源,在第179行的C:\ wamp \ www \ Proyecto \ includes \ functionsLabs.php中给出null。有问题的第179行是......

function labStatusEliminar(){

if(isset($_POST['pId'])){

    $idEliminar = $_POST['pId'];

    $msjE = eliminar($idEliminar);

    while($row = mysql_fetch_assoc($msjE)){  //<--LINE 179
        echo 
             '<p>El laboratorio: '.$row['idlab'].' ha sido eliminado de la lista</p>';
     }
    }
   }

function eliminar($idEliminar){

$query = "UPDATE labs SET estado=3 WHERE labs.idlab = $idEliminar";
    $result = do_query($query);

}

这个功能的作用是获取按钮的ID并找到具有相同id的实验室,然后将该实验室的estado更改为3。

进行选择时(我知道代码易于注入&gt;。&lt;)我一直在使用这样的东西:

$query = "SELECT bk.idlab , bk.codigolab , bk.capacidad, bk.carrera, bk.ubicacion, bk.estado FROM labs as bk WHERE bk.idlab = $pId ";

所以也许我需要为我的alter语句设置一个“别名”?

2 个答案:

答案 0 :(得分:1)

$(document).on('click',".btnEliminar",function() {
  var idAttr = $(this).attr('id');
  var id = parseInt(idAttr.substring(12));

  var request = $.ajax({
    url: "includes/functionsLabs.php",
    type: "post",
    data: {

    'call': 'displayInfoLabs',
    'pId':id},

    dataType: 'html',

  success: function(response){
    $('#info').html(response);
    }
  });
});
你试试这个吗?

答案 1 :(得分:1)

您需要观看未来的元素事件,您可以使用jquery on方法和委派事件来执行此操作。

http://api.jquery.com/on/

事件处理程序仅绑定到当前选定的元素;在您的代码调用.on()时,它们必须存在于页面上。要确保元素存在且可以选择,请在文档就绪处理程序内对页面上HTML标记中的元素执行事件绑定。如果将新HTML注入页面,请在将新HTML放入页面后选择元素并附加事件处理程序。或者,使用委托事件附加事件处理程序,如下所述。

委托事件的优势在于它们可以处理来自稍后添加到文档的后代元素的事件。 通过选择在附加委托事件处理程序时保证存在的元素,您可以使用委派事件来避免频繁附加和删除事件处理程序。 此元素可以是模型 - 视图 - 控制器设计中视图的容器元素,例如,如果事件处理程序想要监视文档中的所有冒泡事件,则可以是文档。在加载任何其他HTML之前,文档元素在文档的头部可用,因此可以安全地将事件附加到那里而无需等待文档准备就绪。

而不是$(".btnEliminar").click(function() {

使用$("body").on("click",".btnEliminar", function() { ...

请注意,您应该将"body"替换为包含较少元素的容器

您可以使用console.log在javascript中进行调试,并检查您的错误是否在PHP中。