查找.click函数的类
finding the class of .click function
我有一个字符串对象的书,我已经从JSON对象。这个Book对象有三个键值对:Title、Author和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循环的结果。所以有一种方法,我可以得到类名的Div有onclick或按钮的标题,这样我就可以从对象的数组我创建的URL ?或者有更简单的方法。还有谁能指出为什么"jsonString.books。"长度"不起作用?提前感谢你的帮助,非常感谢。: -)
使用立即调用的函数表达式创建闭包应该可以达到目的。只需替换这个:
$(htmlString).appendTo(attachPoint).click(function () {
loadBook(URL);
});
与这个:(function(URL) {
$(htmlString).appendTo(attachPoint).click(function () {
loadBook(URL);
});
})(URL);
在匿名函数作用域中的 URL
将获得传递给它的值,该值将是for
循环迭代的正确值。
在ECMAScript中,变量的作用域是它们的函数,而不是任何块。
绑定到click
的函数在整个循环上下文中对URL
具有闭包,而在循环迭代上下文中不对URL
具有闭包。
这意味着无论何时调用任何函数,URL
将具有循环设置的最后一个值。
每次循环需要冻结URL
的值。一种方法是在其他地方设置一个函数,将URL
作为参数,并返回一个关闭它的函数,这样:
function getBookLoader(url) {
return function (){
loadBook(url);
};
}
你可以用下面的代码替换你的... .click
行:
$(htmlString).appendTo(attachPoint).click(getBookLoader(URL))
要回答标题中的问题,事件的target
属性包含事件被分派到的对象,currentTarget
属性包含侦听器当前正在被评估的对象。currentTarget
应该是div
- 将代码放入click函数时出现javascript问题
- 将参数中类似形式的ID传递给函数click()
- 如何在javascript中使用click函数选择数组元素
- 使用jqGrid列格式化程序函数使ng-click工作
- Javascript:函数bind.click&对于每个复选框
- ng-click指令没有调用整个函数
- .replaceWith 无法使用 .click 函数加载另一个值
- Jquery:输入类型=“”;按钮“;使用.click()函数在Internet Explorer和Safari中不起作
- jQuery-click函数不适用于使用innerHTML动态生成的按钮
- 在 Angular 指令中定义一个用于 ng-click 的函数
- .click 函数仅适用于断点
- jQuery 'this' 跟随一个 .find click 函数
- 是否可以在 ng-click 中调用函数字符串
- 如何在 ng-click 函数中更改$rootScope值
- 在引导模式中使用“ng click”触发函数
- 使用带有click()javascript的函数
- Angularjs指令链接调用ng-click中的函数
- 尽管使用了off,click函数仍会触发,这可能也会导致数组问题
- 如何从这个.hover函数.click函数
- 如何在jQuery触发器上运行回调函数("click")