【问题标题】:Blazor how to add/remove class on only one element with same class not all of themBlazor 如何仅在具有相同类的一个元素上添加/删除类而不是全部
【发布时间】:2020-10-09 18:05:17
【问题描述】:

我是 blazor 的新手,我有 2 个(或更多)具有相同类的元素 booksMain 我想让它们在点击时消失。我如何在单击或 css 上添加类,但我只想在单击时添加而不是全部 booksMain-s

没有 JS 互操作可以吗

另一个例子

<button class="btn btn-success" @onclick="ChangeColor">Click Me1</button>
<button class="btn btn-success" @onclick="ChangeColor">Click Me1</button>
<button class="btn btn-success" @onclick="ChangeColor">Click Me1</button>
<button class="btn btn-success" @onclick="ChangeColor">Click Me1</button>
<button class="btn btn-success" @onclick="ChangeColor">Click Me1</button>

如何做到这一点?

【问题讨论】:

  • 不要放你的代码图片,请添加代码的文本,以便其他人更容易复制。
  • 这只是一个例子,它不是“不工作的代码”我只是指很多具有相同类的元素,但我想为其中一个添加类

标签: asp.net-mvc asp.net-core razor onclick blazor


【解决方案1】:
@page "/"

@foreach (var item in items)
{
    <button class="@item.Color" @onclick="@(() =>  item.Shown = !item.Shown )">@item.ID</button>
}

@code {
    List<Book> items = Enumerable.Range(1, 10).Select(i => new Book { ID = i, Title=$"Title{i.ToString()}", Shown = false }).ToList();

    public class Book
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public bool Shown { get; set; }
        public string Color => Shown ? "green" : string.Empty;
    }
}

app.css 或 style.css

.green {
background-color: green;

}

注意:上面的代码是一个简单的切换...现在对您的代码进行相应的建模。

根据请求更新...请注意,上述解决方案比以下解决方案要好得多:

    @page "/"

<button type="button" class="@Color[0] btn btn-success" @onclick="@(() => ChangeColor(0))">Click Me1</button>
<button type="button" class="@Color[1] btn btn-success" @onclick="@(() => ChangeColor(1))">Click Me1</button>
<button type="button" class="@Color[2] btn btn-success" @onclick="@(() => ChangeColor(2))">Click Me1</button>
<button type="button" class="@Color[3] btn btn-success" @onclick="@(() => ChangeColor(3))">Click Me1</button>
<button type="button" class="@Color[4] btn btn-success" @onclick="@(() => ChangeColor(4))">Click Me1</button>

@code {
    string []Color = new String[] {"", "", "", "", "" };



    private void ChangeColor(int index)
    {
        if (Color[index] == "")
        {
            Color[index] = "blue";
        }
        else
        {
            Color[index] = "";
        }
    }
  }

app.css 或 style.css

.blue {
    background-color: blue;
}

希望这会有所帮助..

【讨论】:

  • 不,我的意思是我有 3 个 div-s,每个都有类 booksMain 我想点击添加一个类“消失”到我点击的元素
  • 如果它解决了您的问题,您是否介意将其标记为答案,以便其他人知道它很有用。
  • 非常感谢您提供如此详细的代码,我赞成 :) 但我仍在努力阅读和理解它?
  • 能否请您告诉我有关按钮的信息,因为我对那个代码感到很困惑,只有 5 个简单的按钮,每个按钮都有一个类5th 5th 会变成蓝色
猜你喜欢
  • 2018-01-15
  • 1970-01-01
  • 1970-01-01
  • 2017-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-03
相关资源
最近更新 更多