使用jQuery更改单击元素的样式,并从具有相同类的其他元素中删除该样式

时间:2012-05-09 16:11:42

标签: javascript jquery

编辑:修好了!感谢那些说发布我的HTML的人 - 我看着它,并没有意识到我有两次“appname”类。

<li class="<?php echo $apid; ?> appname appname_getinfo appname_<?php echo $apid; ?>">
       <span class="appname"><?php echo $apname; ?></span>
</li>

所以,我删除了“”并且它有效!

假设我有三个带有类的元素:

EL ONE

EL TWO

EL THREE

当我点击EL ONE时,我想大胆一点。当我点击EL TWO时,它应该变为粗体,EL ONE应该变成正常体重。当我点击EL THREE时,它应该变为粗体,EL TWO变成正常体重。

我的脚本:

//// app info ////
$("li.appname_getinfo").click(function(){

    var appID = this.className.split(' ')[0];
    $.get("wishlist/appinfo.php?pw=R32kd63DL&apid=" + appID, function(data){                                
        $("div#appinfo").html(data);                            
    });

    $("div#appinfo").show();

    $(".appname").css("font-weight", "normal");
    $(this).css("font-weight", "bold");


});

我认为我可以将所有类“appname”设置为normal,然后将$(this)更改为粗体,但它不起作用。 (它不允许任何粗体)。

3 个答案:

答案 0 :(得分:0)

首先,根据经验,直接从js添加类而不是css。其次,您将粗体规则应用于".appname"而不是"li.appname_getinfo"

答案 1 :(得分:0)

需要使用$().each为每个项目添加处理程序。我的代码是:

$('.appName').each(
  function(index, item){
    $(item).click(
      function(e) {
        $('.appName').css('fontWeight', 'normal');
        $(this).css('fontWeight', 'bold');
    });
});

在Chrome中测试过,它似乎可以像您描述的那样工作

答案 2 :(得分:0)

虽然我怀疑问题是,如上所述,类名不匹配,另一个原因可能是因为你在“li”元素中有一个容器,并且该容器设置为font-weight normal。你在LI元素上设置粗体,但如果它内部的元素是普通字体,那么在LI上设置它将不会做任何事情...... e.g。

...
<style>
span { font-weight:normal; }
</style>
...
<ul>
   <li class="appName"><span>this text will not bold when you bold the LI because it's in a span, and spans are styled with normal font-weight</span>
   </li>
<ul>

Chrome的开发工具有助于......