如何使用jquery load检查加载的div标签的内容



我正在处理jqueries地址更改事件,当用户在浏览器中复制并粘贴URL时遇到了障碍。我需要首先加载包含表单的页面的一部分。我可以在每次分页调用之后这样做,但它似乎效率很低。

下面是我当前的代码块:
$.address.change(function(e) {
    var urlAux = e.value.split('=');
    var page   = urlAux[0];
    var start  = urlAux[1];
    if (page == "/visits") {
        $.address.title("Profile Views");
        if (start) {
            $('#start').val(start);
            // ***** If a user has copied and pasted this URL with a start value then I first need to load visits.php in the main div tag.  Is it possible to see if this is loaded or not?
            $.post("visits_results.php", $("#profile_form_id").serialize(),
                function(data) {
                    $('#search_results').html(data);
                    location.href = "#visits=" + start; 
                });
        }
        else {
            var args = localStorage.getItem("visits");
            $('#main').load("visits.php?" + args, function () { }); 
        }
    }

我的尝试是这样的:

var args = localStorage.getItem("visits");
$('#main').load("visits.php?" + args, function () { 
    $('#start').val(start);
    $.post("visits_results.php", $("#profile_form_id").serialize(),
        function(data) {
            $('#search_results').html(data);
            location.href = "#visits=" + start; 
         });
    }); 

一定有更好的办法…这是用每个分页事件重新加载页面的相同部分(visit .php)。有没有更好的方法来加载url,而不是让它们触发地址更改?

使用paul在他的评论中所做的工作,而不是在访问者.php表单中使用Regex查找html内容,这个解决方案将查找附加到#mainID的data()。

Paul的工作笔记:

经过更多的黑客攻击,我想出了这个解决方案,似乎做到了诀窍。我不确定它有多好,但它似乎奏效了。我现在获取主div id,并对惟一字符串进行正则表达式匹配的形式。如果我没有看到它,我加载表单,然后加载结果。不当然,如果这是一个好的做法或不,但它似乎解决了我的问题。

使用.data()代替正则表达式搜索visit .php的html的方法:

    /*check if we're missing visits.php by looking for data() flag*/
             if( !($("#main").data()["hasVisitsPhp"]) ){
              var args = localStorage.getItem("visits");
              $('#main').load("visits.php?" + args, function () { 
                $('#start').val(start);
                $.post("visits_results.php", $("#profile_form_id").serialize(),
                    function(data) {
/* we've loaded visits.php, set the data flag on #main*/
                $('#main').data("hasVisitsPhp","loaded");
                        $('#search_results').html(data);
                        location.href = "#visits=" + start; 
                     });
                });
             }

试试window.location.hash。更改整个href会触发整个页面重新加载,而仅更改哈希值本身最多只会导致页面滚动。

最新更新