jquery mobile,使用 .live() 或 .bind() 在导航上执行 ajax 的正确方法

发布于 2024-12-12 04:05:42 字数 1110 浏览 0 评论 0原文

我有一个像这样的导航栏

      <div id="top" data-role="navbar" data-type="horizontal">
            <ul>
            <li><a href="#a">A</a></li>
            <li><a href="#b">B</a></li>
            <li><a href="#c">C</a></li>
            <li><a href="#d">D</a></li>
            </ul>
        </div>

我有一个

例如

然后我添加我的 javascript

<script language="javascript">
$('div[id="top"] ul li a').live("click", function(e) {
    e.stopImmediatePropagation();
    e.preventDefault();
    var html = //SOME HTML
    var content = $('div[id="content"]');
    $(content).html(html);
});
</script>

但是,它只能工作,即将 div 内容更改为我的 HTML,如果我单击该按钮两次,如果我单击一次,它只会给我默认页面。知道如何纠正吗?

我在这里创建一个小提琴供您测试 http://jsfiddle.net/3Rcem/

我找到了使用 .click() 而不是 .live 的解决方案('click')但是这样我无法绑定到 Jquery mobile 建议的'vclick',任何人都可以帮助我使用 live 吗?

I have a navigation bar like this

      <div id="top" data-role="navbar" data-type="horizontal">
            <ul>
            <li><a href="#a">A</a></li>
            <li><a href="#b">B</a></li>
            <li><a href="#c">C</a></li>
            <li><a href="#d">D</a></li>
            </ul>
        </div>

And I have a <div id="content"> for example

Then I add my javascript

<script language="javascript">
$('div[id="top"] ul li a').live("click", function(e) {
    e.stopImmediatePropagation();
    e.preventDefault();
    var html = //SOME HTML
    var content = $('div[id="content"]');
    $(content).html(html);
});
</script>

However, It only works i.e. change the div content to my HTML if I click twice to the button, if I click one It only give me the default page. Any idea how to correct it ?

I create a fiddle here for you to test
http://jsfiddle.net/3Rcem/

I find a solution to use .click() instead of .live('click') but with this I cannot bind to the 'vclick' which is suggested by Jquery mobile, anyone can help me with using live ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

内心荒芜 2024-12-19 04:05:42

我不知道为什么,但是当我将 .live("click", 更改为 .click( 时,效果很好。

顺便说一句: $('div [id="content"]') 不正确,您应该执行 $('div#content') ,并且可能只是 $('#content')代码>

也是这样的:<代码><脚本language="javascript"> 不正确,应该是:

I don't know why, but when I changed .live("click", to .click( it worked fine.

BTW this: $('div[id="content"]') is not right. You should do $('div#content') and probably just $('#content').

Also this: <script language="javascript"> is not correct, it should be: <script type="text/javascript">.

欢烬 2024-12-19 04:05:42

试试这个。我现在将标题显示为数据,但您可以更改行为以满足您的需求。希望这有帮助!

...
    <script language="javascript" type="text/javascript">
        $(document).ready(function () {
            $('#top').find('a').click(function(e) {
                var html = "<p>" + $(this).text() + "</p>";
                var content = $('#middle');
                content.html(html);
                return false;
            });        
        });
    </script>  
</head>

Try this one. I am displaying now the title as data, but you can change behavior to match your needs. Hope this helps!

...
    <script language="javascript" type="text/javascript">
        $(document).ready(function () {
            $('#top').find('a').click(function(e) {
                var html = "<p>" + $(this).text() + "</p>";
                var content = $('#middle');
                content.html(html);
                return false;
            });        
        });
    </script>  
</head>
千纸鹤带着心事 2024-12-19 04:05:42

这对我有用。我所做的只是更改 href 以删除额外的导航部分。 (例如从#A 到#)。

        <header data-role="header" class="ui-bar">   
            <h1> HEADER </h1>
            <a href="index.html" data-icon="gear" class="ui-btn-right">Options</a>
            <div id="top" data-role="navbar" data-type="horizontal">
                <ul>
                    <li><a href="#">A</a></li>             
                    <li><a href="#">B</a></li>
                    <li><a href="#">C</a></li>
                    <li><a href="#">D</a></li>
                </ul>
            </div>
        </header>   

        <div data-role="content" id="middle">   
            <strong>Content</strong> Is <i>Here</i>
        </div>  

        <footer data-role="footer" data-position="fixed">  
            <h1> Copyright (C) by me </h1>
        </footer>  
    </div>  
    <script language="javascript">
        $('div[id="top"] ul li a').live("click", function(e) {
        e.stopImmediatePropagation();
        e.preventDefault();
        var html = $(this).html();
        var content = $('div[id="middle"]');
        $(content).html(html);
        });
    </script>
</body>  

This worked for me. All I did was change the href's to remove the extra nav part. (e.g. from #A to #).

        <header data-role="header" class="ui-bar">   
            <h1> HEADER </h1>
            <a href="index.html" data-icon="gear" class="ui-btn-right">Options</a>
            <div id="top" data-role="navbar" data-type="horizontal">
                <ul>
                    <li><a href="#">A</a></li>             
                    <li><a href="#">B</a></li>
                    <li><a href="#">C</a></li>
                    <li><a href="#">D</a></li>
                </ul>
            </div>
        </header>   

        <div data-role="content" id="middle">   
            <strong>Content</strong> Is <i>Here</i>
        </div>  

        <footer data-role="footer" data-position="fixed">  
            <h1> Copyright (C) by me </h1>
        </footer>  
    </div>  
    <script language="javascript">
        $('div[id="top"] ul li a').live("click", function(e) {
        e.stopImmediatePropagation();
        e.preventDefault();
        var html = $(this).html();
        var content = $('div[id="middle"]');
        $(content).html(html);
        });
    </script>
</body>  

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文