jquery移动触发器('create')方法不适用于iframe

时间:2013-08-13 10:16:58

标签: jquery-mobile iframe

当我尝试将.trigger('create')方法调用到iframe内容时,它不起作用,并且css类不应用于input:text元素。但是当我为iframe之外的html内容调用.trigger('create')方法时,它可以正常工作

请转到jsfiddle上的此链接'here',然后点击“加载移动视图”

javascript代码

$('#mobile_view').contents().find('body').append("<div id='fbm_mob_menu'></div>");

$("#load_mobileview").click(function(){
    var content = ' <form class="fbm_contactform">\
    <div>Contact Us</div>\
    <div data-role="fieldcontain"><label for="name" >Name</label>\
    <input name="name" type="text" class="m-field" /></div>\
    <div data-role="fieldcontain"><label for="email">Email</label>\
    <input name="email" type="text" class="m-field" /></div>\
    <div data-role="fieldcontain"><label >Message</label>\
    <input name="message" type="text" class="m-field" /></div>\
    <input name="submitButton" type="submit" class="m-field" value="Send Message"  /></div>\
    </form> ';
$("#mobile_view").contents().find("#fbm_mob_menu").before(content);
$("#mobile_view").contents().find(".fbm_contactform").trigger("create");      
});

html代码

<a href="javascript:void(0)" id="load_mobileview" >load mobile view </a>
<iframe id="mobile_view"></iframe>
<div id="test"></div>

2 个答案:

答案 0 :(得分:1)

iFrame内容不应该“轻松”访问,所以对我来说这是正确的行为。

如果您查看jQuery Mobile API示例,则可以看到所有页面都是使用iFrame完成的,并且每个iFrame都有自己的jQuery Mobile版本。

因此,如果你有一个iframe,请在iFrame中包含JQM,一切都应该是好的。

答案 1 :(得分:0)

我可以通过在iframe中编写一个javascript函数来解决这个问题。并从iframe调用该函数。

在iFrame中

<script>
window.trigerCreate =function(){$(".fbm_contactform").trigger("create");}
</script>

父母

window.frames[0].trigerCreate();