我正在使用滑块作为屏幕的用户输入。基本上它是一个批量更新屏幕,其中有一个包含多行的表,因此有多个滑块。我创建了它,以便隐藏的值是在表单中发布的内容。
<td>
<input class="percentageProvidedHidden" type="hidden" name='<%= "Values[" + i + "].Percentage" %>' value='<%=item.Percentage %>' />
<div class="percentageProvidedSlider"></div>
</td>
我有更新工作正常(移动滑块更改隐藏的输入值,提交,值在db中更新),但是,我无法得到该死的东西用隐藏输入的值初始化(注意“值:“下面的参数”。在这种情况下,我认为$(this)实际上并不是$('percentageProvidedSlider'),而是页面本身。有人可以帮助我使用隐藏的输入字段初始化滑块值吗?我正在使用ASP .Net MVC 2,所以如果有任何方法我应该尝试,我也欢迎他们。
$('.percentageProvidedSlider').slider(
{
min: 0,
max: 100,
step: 25,
value: $(this).parents('tr').find('input.percentageProvidedHidden').val(),
slide: function(e, ui) {
var mypos = ui.value;
$(this).find('.ui-slider-handle').text(ui.value);
},
change: function(event, ui) {
var myVal = $(this).slider("option", "value");
$(this).parents('tr').find('input.percentageProvidedHidden').val(myVal);
var myDropDown = $(this).parents('tr').find('select.verified');
}
});
答案 0 :(得分:2)
你在this
不正确是正确的,但事实上,当你宣布对象时(如果this
是滑块对象),this
是尚未添加到DOM的对象,因此 没有父项。所以你必须使用类似的东西:
$('.percentageProvidedSlider').each(function() {
var $sld = $(this); // is the current div.percentageProvidedslider
$sld.slider(
{
min: 0,
max: 100,
step: 25,
value: $sld.parents('tr').find('input.percentageProvidedHidden').val(),
slide: function(e, ui) {
var mypos = ui.value;
$(this).find('.ui-slider-handle').text(ui.value);
},
change: function(event, ui) {
var myVal = $(this).slider("option", "value");
$(this).parents('tr').find('input.percentageProvidedHidden').val(myVal);
var myDropDown = $(this).parents('tr').find('select.verified');
}
});
});
答案 1 :(得分:1)
我想我明白了。在上面的代码之后,我提出以下内容:
$('.percentageProvidedSlider').each(function() {
var myVal = $(this).parents('tr').find('input.percentageProvidedHidden').val();
$(this).slider("option", "value", myVal);
});
这似乎工作正常。