我有以下jQuery脚本......
$(function() {
$('.eventWrapper').bind('click', function(event) {
var srvName = $(this).data('service');
var srvVal1 = $(this).data('serviceval');
if (srvName == 'livestream')
{
var query = 'http://x'+srvVal1+'x.api.channel.livestream.com/2.0/livestatus.json?callback=?';
$.getJSON(query, function(data)
{
if (data['channel']['isLive'])
{
$(this).find('.eventTime').html('<b>Currently Live</b> ('+data['channel']['currentViewerCount']+' viewers)');
}
});
}
});
});
它运行在以下代码上:
<div class="eventWrapper" data-service="livestream" data-serviceval="srklive">
<div class="eventIcon"><a href=""><img src="image.php?u=3942"></a></div>
<div class="eventName"><a href="">This is a test!</a></div>
<div class="eventTime">09-02-2011 08:00 PM</div>
</div>
它非常自我解释......它与类.eventWrapper绑定。当有人点击div中的任何地方时,它会检查数据。如果数据匹配,则提取JSON查询。到目前为止,这完全正常。
现在的问题是如何用它应该的内容替换.eventTime类中的文本。显然,我不能使用$(this)因为它与现有的getJSON函数有关,而不是绑定函数。我该怎么做呢?
另外,如何在页面加载时激活事件,而不是单击?
答案 0 :(得分:2)
将此存储为变量以在$ .getJSON的回调中使用,因此您指的是正确的上下文/ this
$(function() {
$('.eventWrapper').bind('click', function(event) {
var $this = $(this);
var srvName = $(this).data('service');
var srvVal1 = $(this).data('serviceval');
if (srvName == 'livestream')
{
var query = 'http://x'+srvVal1+'x.api.channel.livestream.com/2.0/livestatus.json?callback=?';
$.getJSON(query, function(data)
{
if (data['channel']['isLive'])
{
$this.find('.eventTime').html('<b>Currently Live</b> ('+data['channel']['currentViewerCount']+' viewers)');
}
});
}
});
});
答案 1 :(得分:1)
这会有用吗?
$('.eventWrapper').bind('click', function(event) {
var srvName = $(this).data('service');
var srvVal1 = $(this).data('serviceval');
var evtTime = $(this).find('.eventTime');
if (srvName == 'livestream')
{
var query = 'http://x'+srvVal1+'x.api.channel.livestream.com/2.0/livestatus.json?callback=?';
$.getJSON(query, function(data)
{
if (data['channel']['isLive'])
{
evtTime.html('<b>Currently Live</b> ('+data['channel']['currentViewerCount']+' viewers)');
}
});
}
});