2015-06-21 58 views
1

我正在尝试更改面板的背景颜色,使用javascript来模拟“选定”功能。更改引导面板的背景颜色

所以,点击我通过ID获取div并更改其背景颜色。

它工作正常,但只是瞬间和再次重置背景颜色,我不知道为什么?

DJANGO HTML模板

<div class="panel-group"> 
    {% if articles %} 
     {% for article in articles %} 
      <div class="panel panel-success" id="aid_{{ article.articleId }}"> 
       <div class="panel-body"> 
        <a href="" onclick="populateArticle({{ article.articleId }})" style="font-size: 1.2em"><b>{{ article.title }}</b></a><br/> 
        <span style="color:darkgrey; font-size:.9em; font-family:sans-serif; font-style:italic">{{ article.source }} - {{ article.date }}</span><br/> 
        {{ article.sentences }} 
       </div> 
      </div> 
     {% endfor %} 
    {% else %} 
     NO ARTICLES PRESENT 
    {% endif %} 
</div> 

的Javascript

function populateArticle(aid) { 
    document.getElementById('aid_'+aid).style.backgroundColor="#DEF1DE"; 
} 

另外这里是我记录一个GIF的链接,显示的行为:http://g.recordit.co/fSoTieo5Qn.gif(复制粘贴的情况下,在新标签页的链接如果它给出错误)。

任何想法为什么会发生这种情况?

回答

1

您不会阻止默认<a>标记行为,因此您的页面会刷新。

onclick="populateArticle({{ article.articleId }});return false;" 

应该解决它。

+0

Ahh Brilliant !!!解决了它。现在你指出了它,它提醒了我关于javascript void(0)上的这个伟大的线程,以及为什么从onlick事件返回false很重要:http://stackoverflow.com/questions/134845/href-attribute-for -javascript-links-or-javascriptvoid0 –

0

不知道为什么可能发生的事情,我个人会试试这个:

<script> 
    $(document).ready(function() { 
     $(".panel-body a").on("click", function (e) { 
      e.preventDefault(); 
      var id = "#aid_" + $(this).attr("data-articleID"); 
      $(id).css("background-color", "#DEF1DE"); 
     }); 
    }); 
</script> 

您的jQuery脚本后,并在你的HTML失去onClick(坏习惯),而不是通过增加data-articleID属性通过id引用。像这样:

<a href="#" data-articleID="id23" style="font-size: 1.2em"><b>article title</b></a> 

如果您的问题仍然存在,您必须检查是否有任何其他JavaScript将背景更改为原始颜色。

+0

感谢MIchael的回应。我使用Bogdan的答案解决了上述问题。 –

+0

是的,这个答案比较简单,但是作为参考,'onclick'是构建代码的糟糕方式。看看我的解决方案:http://jsfiddle.net/oszma0ko/1/ –

+0

哦,我明白了。合理。 –