Событие Jquery Click не запускается при первом нажатии, но при втором щелчке, почему? - PullRequest
6 голосов
/ 19 февраля 2011

У меня есть код jquery, который

$("a.reply").click(function() {
//code
});

Когда я в первый раз нажимаю на ссылку с классом .reply, ничего не происходит. Во второй раз, когда я нажимаю, код внутри функции щелчка работает.

Ссылка вставляется на страницу с использованием php из базы данных mysql. поэтому он не вставляется динамически.

Почему это происходит? Любое решение?

Код BadASS:

$(function(){
//TextArea Max Width
var textmaxwidth = $('#wrapper').css('width');
//Initialize Focus ids To Different Initially
var oldcommentid = -1;
var newcommentid = -2;
//End Of initialization

$("a.reply").click(function() {
        newcommentid = $(this).attr('id');
        if (newcommentid == oldcommentid)
        {
        oldcommentid=newcommentid;
        $("#comment_body").focus();
        }
        else
        {
        $('#comment_form').fadeOut(0, function(){$(this).remove()});
        var commetformcode = $('<form id="comment_form" action="post_comment.php" method="post"><textarea name="comment_body" id="comment_body" class="added_comment_body" rows="2"></textarea> <input type="hidden" name="parent_id" id="parent_id" value="0"/> <div id="submit_button"> <input type="submit" value="Share"/><input type="button" id="cancelbutton" value="Cancel"/></div></form>');
        commetformcode.hide().insertAfter($(this)).fadeIn(300);
        //
        var id = $(this).attr("id");
        $("#parent_id").attr("value", id);
        oldcommentid=newcommentid;
        //dynamicformcreation function
        dynarun();
        //
        }



        return false;
    });

        dynarun();

        function dynarun()
        {
        //Form Re-Run Functions
        $('#comment_body').elastic();
        texthover();
        $("#comment_form input, select, button").uniform();
        textareasizer();
        $("#comment_body").focus();
        $("abbr.timestamp").timeago();
        return false;
        }

        //TextArea Resizer Function
        function textareasizer(){$("#comment_body").css('max-width', textmaxwidth);return false;}

        //Other Miscellaneous Functions
        $('.comment-holder').hover(
        function(event) {
            $(this).addClass('highlight');
        },
        function(event) {
            $('.comment-holder').removeClass('highlight');
        }
        );

        function texthover()
        {
        $('.added_comment_body').hover(
            function(event) {
                $(this).parent().parent().addClass('highlight');
            },
            function(event) {
                $('.comment-holder').removeClass('highlight');
            }
        );
        return false;
        }
});

Ответы [ 3 ]

9 голосов
/ 19 февраля 2011

Это длинный снимок, но вы запускаете какой-то скрипт отслеживания? Как веб-тренды или coremetrics (или даже некоторые из ваших собственных скриптов, которые глобально ищут все клики)? Я столкнулся с подобной проблемой некоторое время назад, когда первичный щелчок регистрировался coremetrics. Просто мысль.

1 голос
/ 19 февраля 2011

Происходит ли это, если вы закомментируете весь свой код и просто включили alert("hi") в функции щелчка?

Обновление

Я думаю, что у Сарфаза естьправильная идея, но я бы использовал функцию готовности документа вот так

$(document).ready(function(){
  $("a.reply").click(function() {
    //code
  });
});
0 голосов
/ 10 марта 2018

Я столкнулся с той же проблемой и решил ее, удалив:

<script src="bootstrap.js"></script>

Вы можете использовать bootstrap.min.js

...