'凯为此道歉可能是一个简单的问题,而且我的hacky代码也是如此:P但是我已经绞尽脑汁看着文档几个小时了,我绕圈子走了,我的代码基本上是功能的,但我没有从rec-outlay标签中选择一个文本值,我无法解决原因。
以下是我的HTML示例:
<div class='item'>
<p class='issue-title'><strong>Lorem Ipsum</strong></p>
<a class='del-issue' href='#' onclick='document.delIssForm.delIss.value=59;'>Delete</a>
<div class='issue-fix'>
<p>"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.</p>
<p class='rec-outlay'>40.0</p>
</div>
</div>
<div class='item'>
<p class='issue-title'><strong>Lorem Ipsum</strong></p>
<a class='del-issue' href='#' onclick='document.delIssForm.delIss.value=59;'>Delete</a>
<div class='issue-fix'>
<p>"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat.</p>
<p class='rec-outlay'>40.0</p>
</div>
</div>
当点击删除链接时,jquery会启动一个确认对话框,这一切都完全正常,除了我试图从另一个值中减去一个值的位置,有人能指出我正确的方向吗?!
$(document).ready(function(){
$('.del-issue').click(function(){
var elem = $(this).closest('.item');
var clicked = {id: $(this).val()};
// var total = $('input[id=CostToSolve]').val();
$.confirm({
'title' : 'Delete Confirmation',
'message' : 'You are about to delete this item. <br />It cannot be restored at a later time! Continue?',
'buttons' : {
'Yes' : {
'class' : 'blue',
'action': function(){
/* elem.slideUp();
var dataString = 'delIss=' + document.delIssForm.delIss.value;
$.ajax({
type: "POST",
url: "delIssue.php",
data: dataString
}); */
// entry is to be deleted catch the value in the outlay box
var total = $("#CostToSolve").val();
// HELP!!!!!
$(this).closest('.item-fix').find('.rec-outlay').text();
total -= (parseInt($(this).text(), 10) || 0);
// Then update the value in the input
$('#CostToSolve').val(total + ".00");
// Prevent script from doing anything further
return false;
}
},
'No' : {
'class' : 'gray',
'action': function(){} // Nothing to do in this case. You can as well omit the action property.
}
}
});
});
});
答案 0 :(得分:1)
尝试使用'action': function()
时,您属于$(this).closest
的范围,在这种情况下,与上述this
不同。
this
始终与您的代码运行的最深层函数绑定。
尝试将原始元素保存在更全局的变量中,该变量将范围缩小到下一个函数,如下所示:
$('.del-issue').click(function(){
var that = this;
var elem = $(this).closest('.item');
...
'action': function(){
$(that).closest...
...
}
...
在这种情况下,{p> that
将引用del-issue
。这是通过函数链保留this
变量的常见做法。
答案 1 :(得分:0)
哦,是的,我明白了!
我使用了'elem'预先存在的定义
var elem = $(this).closest('.item');
然后找到这样的文本值,现在我的脚本完美运行了:)
// Modify it
$(elem).find('.rec-outlay').each(function(i, ele) {
total -= parseInt($(ele).text(),10) || 0;
});