gpt4 book ai didi

javascript - $(this) 在 javascript 中

转载 作者:行者123 更新时间:2023-11-29 10:50:27 26 4
gpt4 key购买 nike

我在 js 中使用 this 时遇到问题。我有一个像这样使用 this 的函数:

var refreshRequesterStar = function() {
$(".rating").raty({
score: function() { return $(this).attr('data-rating'); },
readOnly: function() { return $(this).attr('data-readonly'); },
halfShow: true
});
};

评分div如下:

<div class="rating" data-readonly="false" data-rating="3.0" style="cursor: default; width: 100px;" title="not rated yet">
<div class="rating" data-readonly="false" data-rating="0.0" style="cursor: default; width: 100px;" title="not rated yet">

这是由这个函数调用的:

$("body").ajaxComplete(function(){
refreshRequesterStar();
$(".time_to_expire").each(function(){
setCountDown(this);
})
$('select').chosen();
});

我可以设置分值,但无法设置只读值。当我用firebug调试的时候,我发现第一个this指向div,第二个this指向window。我哪里错了?注意:我对 JavaScript 了解不多。

更多信息:我正在使用 raty http://www.wbotelhos.com/raty带导轨。

最佳答案

文档和示例表明参数 scorereadOnly 应该是数字和 bool 值,而不是回调函数。您可能需要这样重写您的代码:

$(".rating").each(function() {
// inside the function, this refers to the .rating element being iterated
$(this).raty({
score: parseFloat($(this).attr('data-rating')), // see note #1
readOnly: $(this).attr('data-readonly') == "true", // see note #2
halfShow: true
});
});
  1. .attr() 返回一个字符串; parseFloat()函数用于转换字符串,例如"2.5"变成数字2.5
  2. == "true" 如果属性值等于 "true",则返回 bool 值 true;在所有其他情况下返回 false

引用:

关于javascript - $(this) 在 javascript 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11152089/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com