1

I'm using an element value with the default loaded page: like this:

<input type="hidden" value="environment_1" class="myView">

And later, I'm loading another page like:

$("#myContent").load("newPage");

Inside this new page I have a similar html tag:

<input type="hidden" value="environment_2" class="myView">

My problem is that after the load, if I do :

myEnv = $('.myView').val();
alert (myEnv);

It always show me environment_1 value. How could I get the new environment_2 value ?

4

6 回答 6

2

.load异步的。我假设您在更改内容$('.myView').val(); 之前致电。

确保.val仅在内容更改后才调用。您可以通过将回调传递给.load

$("#myContent").load("newPage", function() {
    alert($('.myView').val());
});
于 2013-06-13T10:28:39.747 回答
1

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

类型

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

看演示

于 2013-06-13T10:30:05.690 回答
1

When a selector yields more than one element, .valwill always yield the value of the first element in the set.

为了定位environment_2,您需要更具体地了解您要查询的元素。你应该专门看$('#myContent .myView')吗?或者也许总是在$('.myView:last')

如果你想要所有的值,你可以这样做:

$('.myView').map(function() { return $(this).val(); });

jQuery 并不确切知道您想要什么,原因与我们不知道的原因相同:)

于 2013-06-13T10:26:46.307 回答
1

利用 $('.myView')[0].value

$('.myView')[1].value

于 2013-06-13T10:27:01.640 回答
1

首先你检查$('.myView').length。它应该返回 2。

然后你可以写代码

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

或者

$('.myView').last().val(); 
于 2013-06-13T10:29:05.777 回答
0

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

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

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

$('.myView', '#myContent').val()
于 2013-06-13T10:26:56.747 回答