2013-08-05 159 views
1

jQuery Mobile的:

我有这样的代码:

$("#header ." + className).on("click",function(event) 
    { 
    var localValue = localStorage.getItem(selectedInstitut); 
    if (localValue === null) { 
     localStorage.setItem(selectedInstitut, "favorit"); 
     console.log("Is NOT favorited. Doing that now") 
     $(this).buttonMarkup({theme: 'b'}); 
     } 
    else { 
     localStorage.removeItem(selectedInstitut); 
     console.log("Is favorited. Unfavorited now!!") 
     $(this).buttonMarkup({theme: 'a'}); 
     } 
    }); 

这正常一个的时间,但我有几个动态生成的页面相同的按钮(不同类的名称虽然)。 如果被点击一个页面上的按钮,我切换到另一个,它进入了IF进入else条件。 如果我切换到第3页,它进入了IF,ELSE,再次进入IF语句...等等为第4页。

任何想法?

+1

我建议结合从文档事件代表团事件,包括它不会得到执行不止一次全局脚本。发生什么是每当您加载新页面时,代码再次执行,绑定另一个事件。 –

+0

顺便说一句,''''用'id'选择。 –

+0

你能更具体一点吗?我有点新的jQuery。 – lornz

回答

1

由于您使用jQuery Mobile的,该网站就会把你的整个custom.js文件(或任何你的代码保存)到缓存中,对于className值将要在第一页设置,然后因为整个文件被添加到缓存中,所以不会再更改

首先,确保你所有的data-role="page"元素也有一类page看起来与此类似:

<div data-role="page" class="page"> 

然后,在你的JS文件,把你的代码,该处理程序中:

$(document).on('pageinit', '.page', function(event) { 
    // ... your code from above 
}); 
+0

感谢这个答案。 我已经这样做了,但我使用id =“page “,而不是类。这是个问题? – lornz

+0

如果你这样做已经,确保每个页面都有一个'ID =页面”和'变化到.page''#page'。如果仍然无法正常工作,而比单'.js'文件中设置此事件处理程序,我把代码**它需要被解雇每个**页面上,这将导致变量'className'是“新鲜”的每一页上。 – adamdehaven

+0

您可以发布所有的代码,然后(因为你说你已经这样做了)? – adamdehaven