0

我在 .net 中有一个带有 mvc 3 的项目,我正在尝试实现 jquery mobile,但我对自定义 js 有一些问题,这是 _Layout.Mobile.cshtml 的部分代码

<body>
<div data-role="page" id="div_layout">
<div data-role="header">
    <a href="/" data-icon="home">Inicio</a>
    <h1>Title</h1>
</div>
<div data-role="content">
    @Html.Partial("_LogOnPartial")
    @RenderBody()
</div>
<div data-role="footer">
    <h4>Footer text</h4>
</div>
</div>

<script type="text/javascript">...</script>   
<script type="text/javascript" src= "@Url.Content("~/Content/js/utilities.js")">
</script>
</body>

结果html是(图片链接):

http://i.imgur.com/1rQyx.png

_LogOnPartial 部分视图使用了 utility.js 文件中的一些功能,问题是这个 js 文件必须在部分视图之后,如果不是它不起作用,直到这里一切都很好,但是当我在正文部分提交表单时,所有的data-role="content" 中的代码被复制并放置在底部,这是 html 结果(图片链接):

http://i.imgur.com/inCEs.png

所以_LogOnPartial部分视图中的内容停止工作,配置文件有ajaxEnabled:true,当我禁用ajax时一切正常,但我想使用jq移动转换,我也无法显示ajaxEnabled的加载消息:false , 有人可以帮助解决这个问题吗?提前致谢。

好的,谢谢您的回答,_LogOnPartial 部分视图代码是

<div id = "loginbox">
    <div class="User">
        <label for="login_user">Usuario:</label>
        <input id="login_user" name="login_user" type="text" required id="basic" value="" data-mini="true" />
    </div>
    <div class="Password">
        <label for="login_password">Contraseña:</label>
        <input id="login_password" name="login_password" type="password" required id="basic" value="" data-mini="true" />
    </div>
    <div class="boton_login">
        <button type="submit" id="login" data-theme="a">Login</button>
    </div>
    <div id="login_error_message">
        <span id="login_error_message_desc"></span>
    </div>
</div>

utility.js 的部分内容是

$("#login").click(function () {
    alert('this never happens');
    //something
});

当页面第一次加载时它工作正常,但随后它停止工作(当 ajax 复制内容时)

4

2 回答 2

0

没有更多代码,很难说出解决方案。实用程序.js 做什么?LogOnPartial 到底是什么?

您面临的重复 data-role="content" 问题是由于 jquery mobile 的 DOM 缓存http://jquerymobile.com/test/docs/pages/page-cache.html当您禁用 Ajax 时,此功能不可用需要更长的时间,这就是为什么您不再遇到问题的原因。

您可以查看这个答案How do do one disable Caching in jQuery Mobile UI,它显示了一种在隐藏页面时删除页面的方法。

于 2012-07-30T20:40:24.420 回答
0

问题不在于内容重复,而是在加载新内容后您没有注册回调。您的点击处理程序是$('#login')在加载初始内容时设置的,但您需要为新内容重新设置该处理程序。

查看要订阅的事件的事件文档:http: //jquerymobile.com/demos/1.1.1/docs/api/events.html

jQuery Mobile 所做的是向 URL 发出 AJAX 请求,并将内容插入 DOM。然后需要连接新内容。

于 2012-07-31T02:45:04.000 回答