从父页面调用函数时,JQuery onclick问题

时间:2011-07-11 05:24:10

标签: php javascript jquery ajax

我遇到了问题..

实际上,从子页面向父页面发送值时确实存在问题。 我实际上是通过JQuery加载页面,并且该页面正在刷新以显示新结果,但是其中一个问题是父页面中的函数不会从子页面调用。 虽然这在Google Chrome,Opera和Safari上运行良好,但它似乎不适用于Firefox。 我听说Firefox不像Safari或Google Chrome那样管理事件吗? 我一直在寻找答案,但我找不到任何东西..

好的,这就是我正在做的事情:

子页面调用另一个文件,该文件具有使我的网站工作的所有功能,这是应该触发该功能的内容:

$like = "<a href='$comment_poster' id='$msgid' class='like' 
         onclick='parent.likecomment(this);'>Like</a>";
echo "$like";

这是从位于父页面的onclick事件中触发的函数(该函数位于父页面中,onclick位于子页面中):

此函数是从子页面接收id以便稍后将值添加到数据库的函数。

function likecomment(commentID)
{
    event.preventDefault();
    var likeid = commentID.id;
    var author = ($(commentID).attr('href'));

    // forming the queryString
    var data = 'likeid='+ likeid + '&author=' + author;
    if(likeid) 
    {
        // ajax call
        $.ajax({
              type: "POST",
              url: "likeprofmessage.php",
              data: data,
              beforeSend: function(html) 
              { 
                  $(".word").html(likeid);
              },
              success: function(html){ 
                  $("#resultsprofcomments").fadeIn('slow');
                  $('#profcommentsdiv').load('showprofmessages.php?vprofile=<?php echo $row['1'];?>').fadeIn("slow");
                  $("#resultsprofcomments").append(html);
              }
        });
    }
}

我尝试过Firefox控制台并收到错误:event is undefined所以这应该是Firefox如何管理事件的问题。 再次感谢任何帮助,非常感谢。

3 个答案:

答案 0 :(得分:0)

我认为只要您在HTML中设置内联的onclick处理程序(如您在示例中所做的那样),以下内容就会起作用:

<A href="..." onclick='parent.likecomment(event,this);'>blah</A>

<SCRIPT>

function likecomment(evt, commentID) {
  evt.preventDefault();
  var likeid = commentID.id;
  // etc
}

</SCRIPT>

对于事件处理程序而不是在HTML中设置内联,符合标准的浏览器(包括FF)应自动将事件对象作为参数传递给处理函数。 IE,最高版本8,无论如何,使用不同的事件模型,并允许您直接引用event - 实际上它是window.event但通常与大多数窗口属性一样,即使您省略{{1} }。

因此,如果您在文档就绪(或onload)上分配单击处理程序,则可以执行以下操作:

window.

答案 1 :(得分:0)

您设法弄乱了代码,但尝试更改

onclick='parent.likecomment(this);'

onclick='parent.likecomment(this);return false;'

然后删除

event.preventDefault();

来自您的函数likecomment(commentID)

答案 2 :(得分:-1)

您是否尝试过发回一个类似

的脚本,而不是使用内联onClick
<Script>$('#{id}').click(function() { 
    var id = this.id;
    likecomment(id);
    return false;
})</Script>