Jquery点击事件不首先点击,但第二次点击,为什么?

时间:2011-02-19 10:50:39

标签: jquery html javascript-events event-handling

我有一个jquery代码,

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

第一次单击.reply类的链接时,没有任何反应。第二次单击时,单击功能内的代码可以正常工作。

使用来自mysql数据库的php在页面上插入链接。所以它没有被动态插入。

为什么会这样?任何解决方案?

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

4 个答案:

答案 0 :(得分:9)

这是一个远景,但你在运行某种跟踪脚本吗?就像webtrends或coremetrics(甚至是你自己的一些脚本,全球都在寻找所有点击)?我刚刚遇到类似的问题,其中初始点击是由coremetrics捕获的。只是一个想法。

答案 1 :(得分:1)

如果您注释掉所有代码并且在点击功能中只有一个alert("hi"),是否还会发生这种情况?

<强>更新

我认为Sarfaz有正确的想法,但我会使用像这样的文档就绪函数

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

答案 2 :(得分:0)

使用内联 CSS 隐藏 div 并使用 JS/jQuery 显示 .这样 Jquery 点击事件将在第一次点击时触发

     <div class="about-block">
      <div class="title">About us</div>
        <div class="" id="content-text" style="display:none;">
            <p>Show me.</p>
        </div>
    </div>

        <script>     
         var x = document.getElementById("content-text");
             jQuery( '.about-block' ).click(function() {
               if (x.style.display === "none") {
                  x.style.display = "block";             

                } else {
                  x.style.display = "none";
                }
             });
      </script>

答案 3 :(得分:-1)

我遇到了同样的问题,我通过删除解决了我的问题:

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

你可以使用bootstrap.min.js