我正在使用默认加载页面的元素值: 像这样:
<input type="hidden" value="environment_1" class="myView">
之后,我正在加载另一个页面,如:
$("#myContent").load("newPage");
在这个新页面中,我有一个类似的html标签:
<input type="hidden" value="environment_2" class="myView">
我的问题是,在加载后,如果我这样做:
myEnv = $('.myView').val();
alert (myEnv);
它始终显示environment_1
值。我怎样才能获得新的environment_2
值?
答案 0 :(得分:2)
.load
异步。我假设您在更改内容之前正在调用$('.myView').val();
。
确保仅在更改内容后致电.val
。您可以通过将回调传递给.load
:
$("#myContent").load("newPage", function() {
alert($('.myView').val());
});
答案 1 :(得分:1)
当一个选择器产生多个元素时,.val
将始终产生该集合中 first 元素的值。
为了定位environment_2
,您需要更具体地了解您要查询的元素。你应该专注于$('#myContent .myView')
吗?或者也许总是在$('.myView:last')
?
如果你想要所有的价值观,你可以这样做:
$('.myView').map(function() { return $(this).val(); });
jQuery并不完全知道你想要什么,原因与我们不相同:)
答案 2 :(得分:1)
使用
$('.myView')[0].value
和
$('.myView')[1].value
答案 3 :(得分:1)
首先,您检查$('.myView').length
。它应该返回2。
然后你可以编写代码
$('.myView:last').val();
OR
$('.myView').last().val();
答案 4 :(得分:1)
答案 5 :(得分:0)
问题是你现在在页面中有两个带有类myView
的元素(我假设第一个myView不在元素#myContent
内)。
这会导致$('.myView')
返回2个元素,$('.myView').val()
将返回第一个元素的值。
一种解决方案是在第二次搜索中查找myView
内的myContent
,例如
$('.myView', '#myContent').val()