所以我的问题背后的逻辑:
我有一个这样的清单:
<ul>
<li>
<a href="#edit" data-transition="fade" class="editLink" data-kms="1" data-date="2015-06-02">Edit</a>
</li>
<li>
<a href="#edit" data-transition="fade" class="editLink" data-kms="2" data-date="2015-06-02">Edit</a>
</li>
<li>
<a href="#edit" data-transition="fade" class="editLink" data-kms="3" data-date="2015-06-02">Edit</a>
</li>
</ul>
因此,当我按下编辑链接时,我必须使用此功能收集data-kms
和data-date
,并将它们放入localStorage
:
function setCurrent() {
//Set localStorage items for clicked element
localStorage.setItem('currentKms', $(this).data('kms'));
localStorage.setItem('currentDate', $(this).data('date'));
//Get data
var kms = localStorage.getItem('currentKms');
var date = localStorage.getItem('currentDate');
//Insert data into edit form
$('#editKms').val(kms);
$('#editDate').val(date);
}
然后我想使用此函数从本地存储中删除该条目:
function deleteRun() {
//Get Current Data
var currentKms = localStorage.getItem('currentKms');
var currentDate = localStorage.getItem('currentDate');
var runs = getRunsObject();
var i = 0;
//Loop throuh runs and remove current run from 'runs' object
while (i < runs.length) {
//Remove Current Run
if (runs[i].kms == currentKms && runs[i].date == currentDate) {
runs.splice(i, 1);
alert('Run Deleted');
} else {
alert('Run cant be deleted!');
}
//Save array without current run
localStorage.setItem('runs', JSON.stringify(runs));
i++;
}
//Show Runs Again
$('.original').hide();
showRuns();
//Preventing form from submiting
return false;
}
所以基本上我必须同时在1个事件上运行2个函数。 而我正试图这样做:
$('.deleteLink').on('tap', function(){
setCurrent();
deleteRun();
});
但由于某种原因setCurrent
未按预期保存数据,因此将值设置为undefined
。
但如果我这样运行:
$('.deleteLink').on('tap', setCurrent);
它工作正常,它实际上正确设置currentKms&amp;的currentdate。
那么如何在同一事件上正确运行这两个函数呢?因为
function(){
setCurrent();
deleteRun();
});
出于某种原因,我的情况不起作用。
答案 0 :(得分:3)
根据您的方法import getpass, poplib
user = '**********@gmail.com'
Mailbox = poplib.POP3_SSL('pop.googlemail.com', '995')
Mailbox.user(user)
Mailbox.pass_('*********')
numMessages = 1 #len(Mailbox.list()[1]) #Only one mail
file = open("mail.html", "w")
for i in range(numMessages):
for msg in Mailbox.retr(i+1)[1]:
file.write(msg)
file.close
Mailbox.quit()
,函数this
中没有引用调用该事件的元素。
您可以使用.call()
setCurrent
方法调用具有给定call()
值的函数和单独提供的参数。
this
您可以使用bind()
$('.deleteLink').on('tap', function(){ setCurrent.call(this); deleteRun(); });
方法创建一个新函数,在调用时,将其this关键字设置为提供的值,并在调用新函数时提供任何前面提供的给定参数序列。
代码的
bind()