Benim inline JS Olay Kolu kaldırmak istiyorum ama hiçbir fikri nasıl

3 Cevap php

Ben dinamik haber yorumları gösteren am bir web sayfası var, "Yorum" bağlantısını haber için yorumları gösteren bir jQuery işlevi bağlanır (haber id show yorum gibi .. = x)

Ama "onClick" işlemcileri en iyi yolu ya da değil?

An kodumu şu:

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

Herhangi bir öneriniz? (Bağlantı kısmı doğru id ayarlamak için foreach döngüde çalışıyor)

3 Cevap

Inline olay işleyicileri work. Onlar çok büyük bir istemci uygulamaları için sadece kötü bir tasarım kararı, ancak doğru kullanmak (örn. false ;) dönmek bunları kullanarak yanlış bir şey yok.

Sorunuzu yanıtlamak için, gibi bir şey yaparak onları kaldırabilirsiniz:

<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>';
?>

nasıl bu konuda:

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

(I php bilmiyorum, bu yüzden sözdizimi yanlış olabilir)

jQuery:

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

Eğer bir öznitelik eklemek ve bağlantı için kullanabilirsiniz.

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

Sonra bağlantıları sayesinde ve işlevini bağlamak jQuery döngü ile (http://docs.jquery.com/Events/bind)

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