2013-10-11 145 views
1

我正在开发某种小型游戏,但遇到了问题。Jquery Mobile在jquery准备好文档之后向ui-grid添加内容

我正在使用Jquery Mobile。

问题很简单,我的动态内容会加载视觉明智,我确实看到卡背面,但点击事件dosent发射。我注意到我的文档已经准备好了,jquery已经有了这个东西。

我尝试了各种不同的东西,例如刷新,通常与列表做伎俩,但由于这是一个UI网格,这是不同的。

我的下面的exmaple代码是什么结构和结构的简短片段。

我正在寻找一种方法在ui-grid-c中刷新我的内容,以便点击事件可以触发。

在底部有一个警告(“我想看到这个弹出消息”);。我想看到这个弹出。

在我的index.html文件

<script src="js/events.js"></script>   
<script src="js/newgriditems.js"></script>  

这是我的静态HTML JQM电网

<div class="ui-grid-c" id="cards"> 

</div> 

我打电话从newgriditems.js

function newCards() { 
    var new = '<div class="ui-block-a"> 
    <img src="img/backside.jpg" /> 
    </div>'; 

    $("#cards").html(new).trigger("create"); 
    $("#cards").page(); 
} 

在events.js此功能有一个

$(document).ready(function() { 

    $(".ui-grid-c div img").click(function() { 
    alert("I want to see this popup message"); 
    }); 

} 

它的工作原理,如果我把内容添加为静态内容。

+1

删除'。就绪()'从来没有使用它的JQM。改变这个'$(“。ui-grid-c div img”)。click(function(){'this this'$(“。ui-grid-c”)。on(“click”,“img”,function (){'。你不需要'.page()'也不需要'.trigger('create')' – Omar

+0

我试过了你的建议,我仍然没有收到我想要的警报弹出消息 – Daniel

+0

http://jsfiddle.net/巴勒斯坦/ UeRCZ /检查这 – Omar

回答

1

首先,总是避免在jQuery Mobile中使用.ready()

重要:使用$(document).bind('pageinit'),不$(document).ready()

你的jQuery学习的第一件事就是调用代码$(文件)。就绪()函数中,所以一切都会立即执行的DOM被加载。但是,在jQuery Mobile中,Ajax用于在浏览时将每个页面的内容加载到DOM中,而DOM就绪处理程序仅对第一页执行。要在加载并创建新页面时执行代码,可以绑定到pageinit事件。该事件在本页面的底部详细说明。

来源:http://jquerymobile.com/demos/1.2.0/docs/api/events.html

当动态添加元素,你需要这样附着事件

$('.static_parent').on('event', '.dynamic_element', function() { 
// code 
}); 
+1

@Daniel不客气;) – Omar