javascript - 查找 .click 函数的类

标签 javascript jquery json html

我有一个从 JSON 对象中获得的书籍字符串对象。该 Book 对象具有三个键值对:标题、作者和 URL。我使用 for 循环来读取每个对象,然后将对象的标题作为按钮放在 html 页面上。但是,当单击该按钮时,我希望该书的 URL 得到提醒。当我读取对象时,我创建 Books 对象并将其推送到数组中以供以后使用。但我无法使用 .Click() 方法,URL 不正确。请参阅代码以更好地理解。 :-)

for (i = 0; i < 6; i++) //I know that there is only 65 Books..jsonString.books.lenght is not working.
{
    var title = jsonString.books[i].title;
    var classname = title.replace(/\s/g, "");
    var author = jsonString.books[i].author;
    var URL = jsonString.books[i].url;
    var htmlString = '<div class="' + classname + '"><input type="button" value="' + title + '"></div>';
    $(htmlString).appendTo(attachPoint).click(function () {
        loadBook(URL);
    });

    OneBook = new Book(author, title, URL);
    arr.push(OneBook);
}

attachpoint 是我从

获取的 html 文件中的引用
var attachpoint=document.querySelector('.buttonAttachPoint');

因此,在上面的代码中,我点击的 URL 始终是 jsonString 中的最后一个对象。这是因为 for 循环而发生的。那么有没有一种方法可以获取具有 onclick 的 Div 的类名或按钮的标题,以便我可以从我创建的对象数组中获取 URL?或者有没有更简单的方法。还有人能指出为什么“jsonString.books.lenght”不起作用吗?预先感谢。:-) 非常感谢所有的帮助。 :-)

最佳答案

使用立即调用的函数表达式创建闭包应该可以解决问题。只需替换这个:

$(htmlString).appendTo(attachPoint).click(function () {
    loadBook(URL);
});

这样:

(function(URL) {
    $(htmlString).appendTo(attachPoint).click(function () {
        loadBook(URL);
    });
})(URL);
该匿名函数范围内的

URL 将传递给它的值,该值将是 for 循环迭代的正确值。

关于javascript - 查找 .click 函数的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15663978/

相关文章:

javascript - 日期与时间之间的日期

javascript - 使用 JS 退出 Google+

javascript - 如何仅在 DIV 可见时运行脚本?

javascript - 如何在 JavaScript 中迭代 JSON 对象并用它创建表?

javascript - 是否可以有一个不断旋转的 DIV 或图像?

javascript - 如何删除 JQuery Multifile 中的警报验证

javascript - jQuery 对类的一个元素的值进行动画处理

python - 尝试在 python 中解码 HTTP 响应。无法弄清楚JSON解码

java - 具有多级多态类型层次结构的 Jackson 反序列化器

javascript - 在 knockout View 中访问 $parent 的 $parent - 嵌套上下文