Проблема JQuery onclick при вызове функции с родительской страницы - PullRequest
0 голосов
/ 11 июля 2011

У меня проблема ..

На самом деле у меня есть проблема при отправке значения с дочерней страницы на родительскую страницу.Я на самом деле загружаю страницу через 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, которое находится на родительской странице (функция находится вродительская страница, которую онкликом находится на дочерней странице):

Эта функция получает идентификатор от дочерней страницы для последующего добавления значения в базу данных.

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);
              }
        });
    }
}

IЯ пробовал консоль Firefox, и я получил ошибку: event is undefined, поэтому это должно быть проблемой в том, как Firefox управляет событиями.Опять же, любая помощь приветствуется, большое спасибо.

Ответы [ 3 ]

0 голосов
/ 11 июля 2011

Я думаю, что следующее будет работать, если вы установите встроенный обработчик onclick в свой HTML (как вы это делали в своем примере):

<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, но в целом, как и в большинстве свойств окна, работает, даже если вы опустите window..

Таким образом, если вы назначите обработчик кликов для документа, готового (или для загрузки), вы можете сделать это:

function yourOnloadFunction() {
  document.getElementById('yourElementId').onclick = clickHandler;
}

function clickHandler(e) {
  // check if event object was passed in, otherwise use window.event
  if (!e) e = window.event;

  // but how to get a reference to the clicked element?
  // use the event object's target property, except (of course)
  // in IE, which uses srcElement:

  var elRef = e.srcElement ? e.srcElement : e.target;

  // rest of your function here, e.g.
  e.preventDefault();
}
0 голосов
/ 11 июля 2011

Вы сумели запутать ваш код, но попробуйте изменить

onclick='parent.likecomment(this);'

на

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

, а затем удалить

event.preventDefault();

изваша функция likecomment(commentID).

0 голосов
/ 11 июля 2011

Вместо использования встроенного onClick, вы пытались отправить обратно скрипт, который делает что-то вроде

<Script>$('#{id}').click(function() { 
    var id = this.id;
    likecomment(id);
    return false;
})</Script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...