3

我有两个函数,一个动态创建段落,另一个函数选择(“更改背景颜色”)和取消选择(“更改为默认背景颜色”)。我遇到的问题是我可以同时选择所有段落,并且我希望能够一次选择一个段落,当然,在取消选择已经选择的段落之后。

当已经选择/突出显示一个段落时,如何防止另一个段落被选择/突出显示?

你可以在这里查看完整的源代码:http: //jsfiddle.net/2QqmN/1/

jQuery代码:

$(document).ready(function(){
var count = 1;
$("#add").on(
    "click", function(){
        $("#a").append('<p>Paragraph ' + count + '</p>');
    count++;

    });
$("#a").on("click", "p", function(){ 
var bg = $(this).css("background-color");


    if(bg=="rgb(255, 255, 255)") {  
        $(this).css({"background-color":"green", "color":"white"});

    } 

 else { 

  $(this).css({"background-color":"white","color":""});


 }
    });



});

如果我足够清楚,请帮助!您将不胜感激!

4

3 回答 3

2

您应该使用 css 来设置所选项目的样式。每个选定的项目都可以被赋予一个“选定”的 CSS 类。单击时,您可以从所有元素中删除该类,然后将该类添加到单击的元素中。

.selected { background-color: green; color: white; }

对于 JavaScript:

var count = 1;
$("#add").on("click", function() {
    $("#a").append('<p>Paragraph ' + count + '</p>');
    count++;
});

$("#a").on("click", "p", function() {
    $(".selected").removeClass("selected");
    $(this).addClass("selected");
});

http://jsfiddle.net/2QqmN/6/

于 2012-04-28T01:35:06.007 回答
1

只需添加一个标志,如下所示:

$(document).ready(function(){
var count = 1, flag = false;
    $("#add").on("click", function(){
         $("#a").append('<p>Paragraph ' + count + '</p>');
         count++;
   });
   $("#a").on("click", "p", function(){ 
        var bg = $(this).css("background-color");
        if(bg=="rgb(255, 255, 255)") {  
            if (flag==false) {
               $(this).css({"background-color":"green", "color":"white"});
               flag=true;
            }
        } else { 
             $(this).css({"background-color":"white","color":""});
             flag=false;
       }
  });
});

小提琴

于 2012-04-28T01:27:21.503 回答
0

我试图理解这个问题。据我所知,您希望在任何给定时间只选择一个段落,但能够添加n 个段落。如果是这种情况,我相信以下内容可以做到这一点:

$( "#a" ).on( "click", "p", activateParagraph );
$( "#add" ).on( "click", addParagraph );

function addParagraph () {
  $( "<p>", { text: 'Paragraph ' + $( "#a p" ).length++ } )
    .appendTo( "#a" ); 
}

function activateParagraph () {
  $( this )
    .addClass( "on" )
    .siblings( ".on" )
      .removeClass( "on" );
}

演示:http: //jsbin.com/uziheg/2/edit

于 2012-04-28T01:44:16.673 回答