0

我第一次尝试 url 持久性,在页面加载后,我有了想要从 URL 中单击的元素。当我加载页面时,.click() 没有注册,但如果我在控制台中键入它,它会正确执行。我曾尝试将代码(特别是(function persistence(formvals){...})();)放在 (document).ready(function(){...}) 部分,但这不起作用。如何让 .click() 在页面加载后注册,并在每个应该点击的元素上注册?

网址:http ://specialorange.org/resume/index.html?gc_abstract_heading&gc_ba_analysis

这些部分的两个 id 是 : gc_abstract_heading gc_ba_analysis,因此$(gc_abstract_heading).click()在控制台中有效,而不是在代码中。

代码:

var formvals = {};
var keyval = location.search.replace('?', '').split('&');
$.each(keyval, function () {
    var splitval = this.split('=');
    formvals[splitval[0]] = splitval[1];
});
console.log(keyval);
console.log(formvals);

(function persistence(formvals) {
    for ( i=0 ; i < keyval.length ; i++ ) {
        console.log(keyval[i]);         
        $(keyval[i]).click();
    };
})();

请注意,此代码不在实时页面上,它在我的本地站点上进行测试。实时页面上的持久性部分是不同的。

4

4 回答 4

1

试试这个:

$(document).ready(function () {
    var formvals = {};
    var keyval = location.search.replace('?', '').split('&');
    for (var i = 0; i < keyval.length; i++) {
        console.log('Trigger click on: '+keyval[i]);
        $('#'+keyval[i]).click();
    };
});

首先,我添加了文档就绪,因此该函数在它准备好之前不会触发。第二; #如果 url 中的名称指向 id,则单击处理程序需要作为前缀。如果它是您更改的#课程.

于 2012-07-31T10:01:12.383 回答
0

在这里在黑暗中快速刺伤,但我总是发现如果你在持久性点击或在 dom 之后使用 jquery 中的实时点击更安全。

$(keyval[i]).live("click",function(){});
于 2012-07-31T09:57:19.517 回答
0

您必须呼吁persistence()document load或准备好)以及formvals声明:

function persistence(formvals) {
    for ( i=0 ; i < keyval.length ; i++ ) {
        console.log(keyval[i]);         
        $(keyval[i]).click();
    };
}

$(function() {
    var formvals = {};
    var keyval = location.search.replace('?', '').split('&');
    $.each(keyval, function () {
        var splitval = this.split('=');
        formvals[splitval[0]] = splitval[1];
    });
    console.log(keyval);
    console.log(formvals);

    persistence(formvals);
});
于 2012-07-31T09:59:08.000 回答
0

如果您以 ID 为目标,则 jQuery 选择器缺少“#”。

于 2012-07-31T10:05:26.423 回答