繁体   English   中英

点击更改div的类别

[英]Change class of div on click

看似简单的问题令我感到困惑...所有答案似乎仅适用于JQuery。

我正在用PHP生成表格日历。

在此处输入图片说明

日历上的每一天都是tr > td > div ,现在看起来像这样:

{cal_cell_content}
    <div class="" id="event" href="" onclick="this.className=\'selected\';return getDate({day});">
        {day}
    </div>
{/cal_cell_content}

当用户单击一个div时,我希望该div的背景将其CSS类更改为“选定”。

然后,如果用户单击另一个div,则我希望该类更改为selected,并且要删除上一个类,以便在任何时候都只能“选择”一个div。

目前,我正在使用this.className='selected除了可以选择多个div之外,其他方法都有效!

如何获得行为,以便我可以选择一个div并突出显示它,然后如果我决定单击另一个div,则上一个div将被取消选择,而新的div被“选中”?

您的div具有相同的ID,这是错误的,请按照以下步骤操作

{cal_cell_content}
    <div class="event" href="">
        {day}
    </div>
{/cal_cell_content}


$('.event').click(function(){
   $('.event').removeClass('selected');
   $(this).addClass('selected');
});

使用javascript:

{cal_cell_content}
    <div class="event" href="" onclick="selectMe(this);">
        {day}
    </div>
{/cal_cell_content}

function selectMe(obj){
    var divs = document.getElementsByClassName("event");
    for(var i = 0; i < divs.length; i++)
    {
       divs[i].className = "event";
    }
    obj.className = "event selected"
}

通过循环将事件侦听器添加到div类,如果单击,则将另一个“ selected”类添加到div。 否则,请删除“选定”类。 “ selected”类将包含您的CSS内容。

例如,

var x = document.getElementsByClassName('yourClass')
for (var i = 0; i < x.length; i++) {
    x[i].addEventListener("click", function(){

    var selectedEl = document.querySelector(".selected");
    if(selectedEl){
        selectedEl.classList.remove("selected");
    }
    this.classList.add("selected");

    }, false);;
}

试试这个原生的JavaScript

document.getElementById('event').setAttribute('class', 'selected');
$('#event').click(function(){
   $(this).attr('class', 'selected');
});

在标准javascript中:

document.getElementById('foo').className += ' selected'

或在JQuery中:

$('#foo').addClass('selected');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM