我正在开发ASP.NET MVC应用程序。
这就是我在Razor View中添加select的方法:
@Html.DropDownListFor(
m => m.VariableDataList[i].VariableDataForLevel[j].VariableDataId,
new SelectList(Model.variableDataItems, "Id", "Name",
Model.VariableDataList[i].VariableDataForLevel[j].VariableDataId),
new {
@onchange = "OnChangeVariableDataId(event, " + @i + ", "+ @j + ");",
data_list_index = @i,
data_level_index = @j
})
我有这个选择:
<select name="VariableDataList[0].VariableDataForLevel[0].VariableDataId" class="valid" id="VariableDataList_0__VariableDataForLevel_0__VariableDataId" aria-invalid="false" onchange="OnChangeVariableDataId(event, 0, 0);" data-list-index="0" data-level-index="0">
[ ... ]
</select>
我想在data-list-index="0" data-level-index="0"
函数中获取数据字段OnChangeVariableDataId
的值:
function OnChangeVariableDataId(event, levelIndex, vDataIndex) {
var aux = $(this).id;
var list = $(this).data('list-index');
var level = $(this).data('level-index');
[ ... ]
}
但aux
,list
和level
变量为undefined
。
我如何获得这些价值?
使用Visual Studio调试器我发现在event.srcElement.dataset
上有两个键levelIndex
和listIndex
及其对应的值。顺便说一下,我也尝试levelIndex
listIndex
$(this).data
获得相同的undefined
值。
即使我用OnChangeVariableDataId(even, 0, 0)
更改OnChangeVariableDataId()
,我也会得到相同的未定义值。
我确定问题出在$(this)
。
答案 0 :(得分:2)
将您的项目传递给内联函数:
onchange="OnChangeVariableDataId(this, 0, 0);"
然后你就能得到这样的数据:
function OnChangeVariableDataId(select, levelIndex, vDataIndex) {
var aux = $(select)[0].id;
var list = $(select).data('list-index');
var level = $(select).data('level-index');
}
答案 1 :(得分:0)
尝试$(this).attr('id')和$(this).attr('data-list-index')