3

私は次のようなかみそりのビューを持っています:

<select id="roletypeddl" >
   <option value="@roletype.Id" selected="selected" data-assignabletoperson="@roletype.AssignableToPerson" >@roletype.Name</option>
</select>

したがって、jqueryでは、data-assignabletopersonがtrueの場合、コードを実行したいと思いました。

if ($('#roletypeddl').find('option:selected').data('assignabletoperson') == true)
{
  do something
}

問題は、このコードが実行されないことです。

私はそれが生成されているhtmlが次のようになっていることに関係していると思います:

<select id="roletypeddl">
  <option data-assignabletoperson="True" selected="selected" value="5">Manufacturer</option>
</select>

問題は、「真」が大文字になっていることだと思います。誰もがこれを回避する方法を知っていますか?

4

2 に答える 2

2

data-属性はデータ型を認識していません。@roletype.AssignableToPersonhtml 出力は ですTrueが、これはブール値ではなく、文字列です...

以下の記述

data-assignabletoperson="True"

はブール値ではなく、その文字列です。したがって、次のように比較する必要があります。

if ($('#roletypeddl').find('option:selected').data('assignabletoperson') == "True")
{
    do something
}

更新: dataあなたのデータ型を知っています。問題は「真」です。それは「真実」でなければなりません。

そして

于 2013-03-21T08:11:19.783 に答える
0

使用してみてください:

data-assignabletoperson="@roletype.AssignableToPerson.ToLower()"

例えば。

<select id="roletypeddl" >
   <option value="@roletype.Id" selected="selected" data-assignabletoperson="@roletype.AssignableToPerson.ToLower()" >@roletype.Name</option>
</select>

参照:

Boolean.ToString が「true」ではなく「True」を出力する理由</a>

また、JavaScriptを使用できます:

.toLowerCase()

例えば。:

if ($('#roletypeddl').find('option:selected').data('assignabletoperson').toLowerCase() == 'true')
{
  //do something
}
于 2013-03-21T08:17:39.177 に答える