弹出窗口中的按钮“onclick”只能工作一次

时间:2013-04-18 15:16:19

标签: javascript jquery jquery-mobile popup

我有一个导入jquery mobile的html / php网页(该文件名为searchresults.php)。当您进入页面时,网址通常类似于

www.domain.com/searchresults.php?&sort="off"&max="5"

在此示例中,排序已关闭,仅显示5个项目。在该页面上是一个按钮,打开一个弹出窗口,我希望用户能够更改这些设置。我使用内置的jquery移动弹出窗口。在该弹出窗口中,您可以打开/关闭“排序”,您可以输入新的最大值。弹出窗口是一个“确定”按钮,用于确认您的新设置。它看起来像这样:

<a href="" id="okbutton" data-role="button" onclick="sortAgain();">OK</a>

sortAgain(); javascript中的函数如下所示:

function sortAgain();
{
    //some code to get the necessary variables//
    ...

    //change the href of the button so you reload the page
    document.getElementById("okbutton").href = "searchresults.php" + "?keyword=" + var1 + "&sort=" + var2 + "&max=" + var3
 }

所以,基本上,在“确定”按钮导航到另一个页面之前,我设置了它应该导航的页面的href。

此方案有效,并且从服务器再次获取searchresults.php文件并重新解释(使用url中的新变量)。

但是,如果我尝试在更改一次后再次更改设置,则弹出窗口无效!换句话说,弹出窗口上的ok按钮的href保持为空,并且不调用javascript函数sortAgain()。我不明白为什么它第一次称onclick方法完全正常,但后来又拒绝再调用它?

我认为它与popup html代码是searchresult.php文件不可分割的一部分这一事实有关,并且hrefing到同一页面会产生问题?弹出窗口是纯HTML,弹出代码中不涉及php。再次,它第一次工作正常。

2 个答案:

答案 0 :(得分:0)

您应该查看如何通过JavaScript附加活动。见这里:javascript attaching events

答案 1 :(得分:0)

在JQM中设置点击处理程序时,您需要使用“pageinit”事件:http://api.jquerymobile.com/category/events/

以下是首次加载页面时如何绑定点击处理程序的示例。

$( document ).on( "pageinit", "#that-page", function() {
    $('#okbutton').on( "click", "#that-page", function( e ) { 
        $(this).attr("href", "searchreslts.php");
    });
});