使用相同的类名称在不同页面上获取元素值

时间:2013-06-13 10:23:42

标签: jquery dom

我正在使用默认加载页面的元素值: 像这样:

<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值?

6 个答案:

答案 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)

它总是会查找第一个元素的val

myEnv = $('.myView:last').val();

See demo

答案 5 :(得分:0)

问题是你现在在页面中有两个带有类myView的元素(我假设第一个myView不在元素#myContent内)。

这会导致$('.myView')返回2个元素,$('.myView').val()将返回第一个元素的值。

一种解决方案是在第二次搜索中查找myView内的myContent,例如

$('.myView', '#myContent').val()