После вызова Ajax, если вы заглянете в Firebug, вы увидите, что ваша страница дважды присутствует в DOM, и поэтому есть также два <div data-role="page" id="home">
и два id="show"
.
Так что, когдаВы запускаете $ ("# show"). что-то (), это всегда элемент FIRST с этим идентификатором, который срабатывает.Не забывайте, что ID должен быть уникальным на странице xhtml.
Когда вы используете синтаксис, такой как ul[id=show]
, ul#show
, jquery будет запускать все объекты, не толькопервый.Вот почему это работает.
Возможный обходной путь - использовать страницу в качестве пространства имен
<div data-role="page" class="type-interior" id="home">
<div data-role="wrapper" class="type-home">
<div data-role="header" data-position="inline" id="header"></div>
<div data-role="content" class="content">
<div class="show" style="display:none">Hi!!</div>
<a class="link" href="#">Show!</a><br />
<a href="test3.htm?id=3">Next page</a>
</div>
</div>
</div>
<script type="text/javascript">
$('#home').live('pagecreate',function(event){
$(".link", this).live('click', function(page) {
$(this).closest('div[data-role=page]').find(".show").show();
});
});
</script>
Но это не лучшее решение.Если ваши страницы разные, дайте им идентификаторы или используйте классы и найдите хорошего предка!