jquery:点击一个P,它的颜色变化,点击另一个p,它的颜色变化。单击第二个P时,更改第一个P颜色?

时间:2011-03-10 06:11:44

标签: javascript jquery selected click

我正在尝试访问之前单击的段落/元素。用户将单击一个段落,并且bg颜色从白色变为蓝色,在视觉上这对用户来说意味着他们现在选择了他们点击的P.当他们点击不同的段落时,之前选择的段落的bg颜色从蓝色变回白色。

有没有办法选择之前点击过的段落?最好不要添加和删除类。显然我的代码不起作用,但我已经解释了我认为答案可能有用吗?

$('p').bind('click', function () {
   //checks if an item was previously selected, if so, sets background back to white
   $(previouslySelected).css({'backgroundColor':'white'})

   //change the current background blue, then store this item for the next click
   $(this).css({'backgroundColor':'blue'})
   var previouslySelected = $(this)
})

2 个答案:

答案 0 :(得分:2)

没有类,您需要将变量存储在单击处理函数范围之外:

// on page load + wrapped in another function to avoid polluting global namespace
$(document).ready(function() {

    var previouslySelected
    $('p').bind('click', function () {
       //checks if an item was previously selected, if so, sets background back to white
       $(previouslySelected).css({'backgroundColor':'white'})

       //change the current background blue, then store this item for the next click
       $(this).css({'backgroundColor':'blue'})
       previouslySelected = $(this)
    })

})

添加类更简单:

$('p').bind('click', function () {
    $("p.selected").removeClass("selected")
   $(this).addClass("selected")
})

答案 1 :(得分:0)

CSS

.highlight
{
background-color:yellow;
}

HTML

<p class="highlightable"></p>
<p class="highlightable"></p>
<p class="highlightable"></p>

<强>的Javascript

jQuery(function(){

  jQuery('.highlightable').bind('click',function(){
           var elm=jQuery(this);
           if(elm.hasClass('highlight'))
           {
              elm.removeClass('highlight')
           }
           else
           { 
                 jQuery('.highlight').removeClass('highlight');
                 elm.addClass('highlight');
           }
   });
});

DEMO