【问题标题】:Want to remove my inline JS Event Handle but no idea how想删除我的内联 JS 事件句柄,但不知道如何
【发布时间】:2009-07-06 16:43:38
【问题描述】:

我有一个动态显示新闻 cmets 的网页,“评论”链接连接到一个 jQuery 函数,该函数显示新闻的 cmets(..like show cmets from news id = x)

但是“onClick”处理程序不是最好的方法还是?

这就是我现在的代码:

echo '<li>';
echo "<a href='#' onClick='showhideComments({$news['id']});'>" .
        $this->translate('INDEX_COMMENTS'). " ($count)". "</a>";
echo '</li>';

有什么建议吗? (链接部分在foreach循环中运行以设置正确的id)

【问题讨论】:

    标签: php javascript jquery html


    【解决方案1】:

    内联事件处理程序工作。对于非常大的客户端应用程序来说,它们只是一个糟糕的设计决策,但是如果您正确使用它们(例如 return false;),使用它们并没有错。

    要回答您的问题,您可以通过以下方式删除它们:

    <script>
    $(document).ready(function(){
        $(".comment").click(function(e){
            var news_id = $(this).attr("news_id"); // you can use the news_id for whatever you want
            if(this.style.display == "none")
                $(this).show();
            else
                $(this).hide();
            e.preventDefault();
        });
    });
    </script>
    
    <?php
    echo  '<li>';
    echo "<a href='#' class='comment' news_id='".$news['id']."'>" .
    $this->translate('INDEX_COMMENTS'). " ($count)". "</a>";
    echo '</li>';
    ?>
    

    【讨论】:

      【解决方案2】:

      这个怎么样:

       echo  '<li>';
       echo "<a href='#' class='comments' name='$count'>" .
        $this->translate('INDEX_COMMENTS'). " ($count)". "</a>";
       echo '</li>';
      

      (我不懂php,所以语法可能不对)

      jquery:

      $(".comments").click(function(){
        var id = $(this).attr("name");
        //show the news item for this id
      });
      

      【讨论】:

      • 我想你的意思是把 name='{$news['id']}' 因为 jQuery 函数需要一个新闻 id。但是 +1 概念。
      【解决方案3】:

      您可以添加一个属性并使用它来链接。

       echo  '<li>';
       echo "<a href='#' id='news_".$news['id']."'>" .
       $this->translate('INDEX_COMMENTS'). " ($count)". "</a>";
       echo '</li>';
      

      然后用 jQuery 循环遍历链接并绑定函数 (http://docs.jquery.com/Events/bind)

      $("li > a").bind("click", function(){
         showhideComments($(this).attr("id").split("_")[1]);
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-06-29
        • 1970-01-01
        • 1970-01-01
        • 2016-09-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多