【问题标题】:var not updating after jQM call?jQM调用后var不更新?
【发布时间】:2013-02-14 00:29:12
【问题描述】:

我在 jQuery Mobile 中工作。

当您点击 Page1 时,我正在使用 PHP 将页面 ID 设置为隐藏输入。

<input type="hidden" name="frmlid" id="frmlid" value="<?=$page_id;?>" />

当我单击一个按钮时,它会执行一些 jQuery,该 jQuery 会获取 frmlid 的值并发出警报。这很好用。

$(btnShowComments).bind('touchstart mousedown', function(e){
    e.preventDefault();

    var frmlid = $("#frmlid").val();
    alert(frmlid);
}); 

现在,假设我从 Page1 上的链接导航到 Page2。 jQM 做它的事情并加载它所做的任何花哨的 ajax 东西。 Page2 和 Page1 一样,通过 PHP 设置输入值。

这一次点击btnShowComments时,它会提醒上一个page_id(Page1)而不是Page2。

当 jQM 加载新页面时,如何让它不断更新?如果我右键单击并查看 Page2 上的源代码,则输入的值实际上是 Page2。但似乎我的 jQuery 代码没有更新/获取新值。

有什么建议吗?

【问题讨论】:

    标签: jquery jquery-mobile


    【解决方案1】:

    当您打开第一页时,所有页面实际上都在加载,因此无论您在哪个页面,所有页面都已加载并呈现,但它只显示您所在的页面。

    所以首先你不能(最好不要)在所有页面中都有一个具有相同 id 的输入,而是使用 class 。

    第二个假设您在每个页面上都有一个按钮,并且靠近它的隐藏输入,您必须获得最接近 tuched 按钮的输入 即与按钮在同一页面中的输入

    你也可以找到按钮的父div,然后在那个div里面找到输入

    <input type="hidden" name="frmlid" class="frmlid" value="<?=$page_id;?>" />
    

    和jq代码

    $(btnShowComments).bind('touchstart mousedown', function(e){
        e.preventDefault();
    
        var frmlid = $(this).closest('.frmlid').val();
        alert(frmlid);
    }); 
    

    【讨论】:

    • 所以如果我有 100 多个其他文件的链接,它实际上是在加载所有这些页面吗?我链接到单独的文件,而不仅仅是执行
      都在一个文件中。
    • 不抱歉,您只是添加了潜水,在这种情况下,将隐藏输入更改为文本输入并确保值正确。
    • 是的,这很奇怪。加载新页面时输入中的 ID 会发生变化,但 frmlid 实际上与上一页保持不变。
    • 无论如何做我所说的最接近的事情,它应该工作。
    • trey 将两者都包装在一个 div 中,而不是单击获取父元素(包装器)并提醒它是 html 以查看里面的内容,您可以使用 $(wrapper).find 来获取 wrapper 中的输入。 ...您也可以忘记输入并将数据存储在全局 javascript 变量中。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签