Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将类与js中的字符串进行比较_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 如何将类与js中的字符串进行比较

Javascript 如何将类与js中的字符串进行比较,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我想在我的项目中添加切换星功能。为此,我在单击时调用此脚本。此代码无法将starclass的值与字符串中定义的类进行比较。 在这里,我试着向我的项目添加star/unstar功能,就像gmail消息一样 $(".mailbox-star").click(function (e) { debugger; e.preventDefault(); var $this = $(this).find("a > i"); var glyph = $this.hasClass("gly

我想在我的项目中添加切换星功能。为此,我在单击时调用此脚本。此代码无法将
starclass
的值与字符串中定义的类进行比较。 在这里,我试着向我的项目添加star/unstar功能,就像gmail消息一样

$(".mailbox-star").click(function (e) {
  debugger;
  e.preventDefault();

  var $this = $(this).find("a > i");
  var glyph = $this.hasClass("glyphicon");
  var fa = $this.hasClass("fa");
  var msgId = $("#MsgId").val();
  var StarClass = $(".mailbox-star i").attr('class'); 
  var StarStatus;

  if (StarClass === "fa text-yellow fa-star-o") {
    StarStatus = true;
  } else {
    StarStatus = false;
  }

  //var starstatus = document.getElementById('ReadstatusStarred');
  if (glyph) {
    $this.toggleClass("glyphicon-star");
    $this.toggleClass("glyphicon-star-empty");
  }

  $.ajax({
    url: "/Home/Starred",
    type: "GET",
    dataType: "json",
    data: {
      ChangeStarredStatus: StarStatus,
      ChangeMessageId: msgId
    },
    success: function (status) {
      if (status) {
        alert(status);
        if (fa) {
          $this.toggleClass("fa-star");
          $this.toggleClass("fa-star-o");
        }
      }
    },
    error: function () {
      alert("starfailed1");
    }
  })
});
//HTML代码 在这里,我使用模型从我的控制器中获取值。如果我能在我的js代码中发送IsStarred参数的值,我的问题就会得到解决

 <table class="table table-hover table-striped">
                            <tbody>
                                @{int count = 0;}

                                @foreach (var item in Model)
{

    string[] dt = @item.DateTime.ToString().Split(' ');

    <tr title="@item.DateTime" id="ReadMessage" class="@((item.IsRead != true) ? "row row-highlight" : "row")" >
        <td><input type="hidden" value="@item.IsRead" id="Readstatus_@count"></td>
        <td><input type="hidden" value="@item.IsStarred" id="ReadstatusStarred"></td>
        <td><input type="hidden" id="MsgId" value="@item.MessageId" /></td>
        <td><input type="checkbox"></td>
        <td class="mailbox-star" ><a href="#"><i class="@((item.IsStarred==true)? "fa fa-star text-yellow":"fa text-yelow fa-star-o")"></i></a></td>
        <td class="mailbox-name" id="Text1" onclick="location.href='@Url.Action("Read", "Home", new
                                                           {
                                                               NameRead = item.FullName,
                                                               SubjectRead = item.Subject,
                                                               BodyRead = item.Body,
                                                               DateRead = item.DateTime,
                                                               MessageIdRead= item.MessageId,

                                                           })'">
            <a href="#" id="Name">
                @item.FullName
            </a>
        </td>
        <td class="mailbox-subject" id="Text1">

            <b>@item.Subject</b>-
            @if (item.Body == null || item.Body.Length == 0)
            {

            }
            else
            {

                if (item.Body.Length >= 100)
                {
                    @item.Body.Substring(0, 100)
                }
                else
                {
                    @item.Body
                }

            }
        </td>

        <td class="mailbox-attachment"></td>
        <td class="mailbox-date">
            @dt[0]

        </td>


    </tr>
            count++;


}


                            </tbody>
                        </table>
                    </div>

@{int count=0;}
@foreach(模型中的var项目)
{
字符串[]dt=@item.DateTime.ToString().Split(“”);
@项目.主题-
@if(item.Body==null | | item.Body.Length==0)
{
}
其他的
{
如果(item.Body.Length>=100)
{
@item.Body.Substring(0,100)
}
其他的
{
@项目.正文
}
}
@dt[0]
计数++;
}

尝试使用jQuery的
is()
检查类

var StarStatus = $(".mailbox-star i").is('.fa, .text-yellow, .fa-star-o')

如果我没有弄错你的描述,你想拥有像gmail一样的东西,点击启动邮件,再次点击取消启动

如果没有您正在使用的HTML,很难说什么是坏的,但我会按照以下方式来做:

  • 当从后面加载邮件时,必须根据从后面提交的数据中标记星号邮件的方式,将类“starMarked”设置为星号邮件,然后检查某个值是否为真或等于某个值,然后.addClass(“starMarked”)添加到该元素

  • 。单击(执行以下逻辑的函数)绑定到表示邮件的所有元素(列表成员、方框、图标,取决于用户界面中的内容)

  • 点击的功能会检查邮件是否被启动。由于状态已经用类表示,因此无需检查从服务器提取的数据或向服务器发出额外请求以获取该电子邮件的状态。这节省了服务器上的时间和负载。 注意:您必须确定更改服务器状态的请求已通过,或者您在前端和后端切换状态的逻辑可能不一致

  • 前面的切换可以通过多种方式完成,但最简单的方法是使用CSS类“starMarked”来表示它有星号,而缺少星号则表示它没有星号。它给出了一石二鸟(外观和逻辑)。如果需要检查状态,可以使用.hasClass(“starMarked”)


  • 切换类时,请使用.removeClass()从元素中删除类

    如果您使用
    console.log(StarClass)
    您会得到什么?比较这样的类是一个坏主意。谢谢..现在if条件起作用了,但是ajax方法的success属性没有响应。你能检查一下吗?你可以删除
    .fa
    。我知道TS有,但是“.fa-*”图标总是有“.fa”,所以这是一个双重检查