2

我在这里和谷歌上搜索了一个无济于事的解决方案,很多类似的帖子,但大多数人不使用.on()或缺少 end});

正如我正在使用的标题.on('click'),它只会调用该函数一次然后停止,如果我使用.click()它按预期工作!我已经检查了控制台,它告诉我同样的事情。

我将 jQuery 1.9.1 与 jQuery-ui 1.10.3 一起使用,并在 chrome 中进行测试。下面的代码(我从函数中省略了一些代码并缩短了一些,因为我知道这并不重要);

html:

<section id="Cat_List">
    <ul> 
        <li><a href="?C=44834">Cat 1</a></li>
        <li><a href="?C=10908">Cat 2</a></li>
        <li><a href="?C=58202">Cat 3</a></li>
        <li><a href="?C=73689">Cat 4</a></li>
    </ul>        
</section>

查询:

$('#Cat_list ul').on('click', 'li a', function (e) {
    e.preventDefault();
    var href = this.href.split('?C=').pop();
    $('.loading').center('fixed').show();
    console.log(href[1]);
    $.ajax({
        url: Script,
        type: "POST",
        data: {
            Function: 'Cat',
            Cat: href[1]
        },
        cache: false,
        success: function (Data) {
            console.log(Data);
            /*Place data on second page*/
            $('#Cat_List').hide(500, function () {
                $('#Category_con').show(500);
            });
        }
    });
    return false;
});

我也尝试过更改为:

$(document).on('click','#Cat_List ul li a',function(e) {...

没有运气!

功能描述: 如您所见,它获取 UL 中点击链接的类别 ID 获取数据并放置到下一个“屏幕”然后显示下一个“屏幕”。有一个后退按钮可以清除所述屏幕并将其隐藏,然后再次显示类别列表。

当类别列表未隐藏时,任何点击都不会触发该功能!

任何想法如何解决?

4

3 回答 3

2

我无法用您的代码对其进行真正测试,但如果我省略了 ajax 并使用正确的 ID(您在 JS(Cat_List)中使用了大写 L,它可以正常工作,请参见此处:http: //jsfiddle.net/ 6ZVBt/

<section id="Cat_list">
    <ul>
        <li><a href="?C=44834">Cat 1</a>

        </li>
        <li><a href="?C=10908">Cat 2</a>

        </li>
        <li><a href="?C=58202">Cat 3</a>

        </li>
        <li><a href="?C=73689">Cat 4</a>

        </li>
    </ul>
</section>
<section id="next_page">Next Page</section>

和 JS:

$('#Cat_list ul').on('click', 'li a', function (e) {
    e.preventDefault();
    var href = this.href.split('?C=').pop();
    console.log(href[1]);

    $('#Cat_list').hide(500, function () {
        $('#next_page').show(500);
    });
    return false;
});
$(document).on('click', '#next_page', function (e) {
    e.preventDefault();
    $('#next_page').hide(500, function () {
        $('#Cat_list').show(500);
    });
    return false;
});
于 2013-05-21T15:28:14.830 回答
0

问题源于一小段代码,相当尴尬的是,我错过/忘记了我输入的更新 jquery ui 按钮。

$(document).ajaxComplete(function(event, XMLHttpRequest, ajaxOptions) {
    $('button').button();
}).ready(function (){...

不太确定这如何影响 .on 第二次触发,但现在删除它按预期工作!

为我的愚蠢道歉!谢谢您的帮助!

于 2013-05-21T19:47:23.350 回答
0

不知道是什么$('.loading').center('fixed').show();,但如果它是一个覆盖,你没有删除它!

于 2013-05-21T14:44:09.767 回答