点击操作无法正常工作

时间:2014-03-26 04:15:08

标签: javascript php

我的javascript函数

   function ConfirmDelete()
      {
            if (confirm("Delete Account?"))
             var id= $(this).attr('data-id');
             alert(id);
                 location.href='config-project-delete.php?id='+id;
      }

onclick事件触发器

<?php
echo "<span  onclick=\"ConfirmDelete()\" data-id={$row['project_id']}  class='button-content'>
<i class='glyph-icon icon-trash-o float-left'></i>
Delete
</span>
</div>
</a>
</li>"; ?>

我无法获取data-id.It一直在说undefined。非常感谢。

4 个答案:

答案 0 :(得分:1)

在您的示例中,this并未引用您调用该函数的元素,而是引用该函数的所有者(正如您所定义的那样,它看起来像它在全球范围内)。因此,您必须使用所需值的参数调用该函数,然后在函数中使用它,如下所示:

<?php
echo "<span  onclick=\"ConfirmDelete(\$(this).attr('data-id'))\" data-id={$row['project_id']}  class='button-content'>
...

$已转义,因为您已使用PHP回复它。

然后你的函数看起来像这样:

function ConfirmDelete(data_id)
  {
        if (confirm("Delete Account?"))
         var id= data_id;
         alert(id);
             location.href='config-project-delete.php?id='+id;
  }

如果您没有在其他任何地方使用data-id属性并且仅用于此目的,您可以通过直接传递值来简化HTML方面:

<?php
echo "<span  onclick=\"ConfirmDelete('{$row['project_id']}')\" class='button-content'>
...

请注意,我还没有对这些代码进行测试,在混合HTML,JS和PHP时,很容易搞砸了(至少对我而言),所以根据需要调整上面的内容。 / p>

答案 1 :(得分:0)

试试这个

<span onclick="javascript:deleteConfirm('<?php echo 'config-project-delete.php?id='.$row['project_id'] ?>');" deleteConfirm class='button-content'>

的javascript

function deleteConfirm(url)
 {
    if(confirm('Do you want to Delete this record ?'))
    {
        window.location.href=url;
    }
 }

答案 2 :(得分:0)

您必须将触发对象传递给您的函数。

   function ConfirmDelete(triggering_object)
      {
            if (confirm("Delete Account?")) {
                var id= $(triggering_object).attr('data-id');
                alert(id);
                location.href='config-project-delete.php?id='+id;
            }
      }

并添加&#39;这个&#39;对你的对象:

echo "<span  onclick=\"ConfirmDelete(this);\" data-id={$row['project_id']}  class='button-content'>";

答案 3 :(得分:0)

尽管Nick Coons回答是一种更简单的方法(将变量传递给函数),但是为了获得首次询问有关使用数据属性方法的结果,您必须将event传递给函数得到合适的节点。 http://jsfiddle.net/2t4hK/

function ConfirmDelete(e) {
    var target = $(e.target);
    if (confirm("Delete Account?")) {
        var id = target.attr('data-id');
        alert(id);
        //location.href='config-project-delete.php?id='+id;
    }
}

<span onclick="ConfirmDelete(event)" data-id="1"  class="button-content">Delete</span>

<?php
   echo '<span onclick="ConfirmDelete(event)" data-id="'.$row['project_id'].'" class="button-content">';
   echo '<i class="glyph-icon icon-trash-o float-left"></i>Delete</span>';
?>

此外,在您的代码中,我建议您在引号内包装data-id的值。