function removeNewsItem(id,idStamp,obj){
$('#whiteCover')show();
$('#contentOfBox').html= ('Are you sure you want ot completely remove this news item?<br/><br/><div style="text-align:center;"><input type="button" class="button blue medium" onclick="removeNewsItemConfirmed(\'' + id + '\',\''+idStamp+'\','+**obj**+')" value="Yes"/> <input type="button" class="button red medium" value="No" onclick="resetContentBox();"/></div>');
$("#whiteCoverContainer").fadeIn();
}
function removeNewsItemConfirmed(id,idStamp,obj){
alert(obj);
$(obj).remove();
return;
}
<tr><td onclick=removeNewsItem('111','134234',this)></td></tr>
当我点击带有removeNewsItem的td时,我似乎无法通过&#39;这个&#39;元素到下一个功能:用户点击后,会显示一条要求确认删除的消息,但是当他们点击它时,这个&#39;这个&#39;没有得到正确的通过,或者更多的是我无法确定如何......
有人可以帮忙:我如何将obj传递给上面的另一个内联onclick事件?
答案 0 :(得分:1)
好像你应该使用活动。如果您使用jQuery,请使用on()
来附加事件而不是属性。 More about on()
使用此功能代替onclick会将this
返回到您的功能。举个例子:
<table>
<tr><td>123</td></tr>
<tr><td>456</td></tr>
</table>
还有一些JS
// Will have access to this and has ev which is the event
function removeNewsItem(ev){
var $this = $(this);
}
$('table').on('click', 'td', removeNewsItem);
如果您需要将数据值附加到表格单元格,则可以使用数据属性和jQuery's data()执行此操作。
答案 1 :(得分:1)
您的活动可能如下所示(不会更改现有标记的太多):
$(".newsItem").click(function(){
var id = $(this).attr('id');
var idStamp = $(this).attr('idStamp');
$('#whiteCover')show();
$('#contentOfBox').html= ('Are you sure you want ot completely remove this news item?<br/><br/><div style="text-align:center;"><input type="button" class="button blue medium" onclick="removeNewsItemConfirmed(\'' + id + '\',\''+idStamp+'\')" value="Yes"/> <input type="button" class="button red medium" value="No" onclick="resetContentBox();"/></div>');
$("#whiteCoverContainer").fadeIn();
});
function removeNewsItemConfirmed(id,idStamp){
alert(id);
$("#"+id).remove();
return;
}
您的HTML将如下所示:
<tr><td id='111' idStamp='134234' class='newsItem'></td></tr>
答案 2 :(得分:0)
this
是对被点击元素的引用。如果您使用自己的onclick
处理程序添加新元素,那么this
将引用该元素。不是那个创造它的人。
所以这将永远不会像你想象的那样工作
onclick="removeNewsItemConfirmed(\'' + id + '\',\''+idStamp+'\','+**obj**+')"
相反,您需要创建一个可以跟踪的引用。
function removeNewsItem(id,idStamp,obj){
$(obj).addClass('markedForDeletion');
$('#whiteCover')show();
$('#contentOfBox').html= ('Are you sure you want ot completely remove this news item?<br/><br/><div style="text-align:center;"><input type="button" class="button blue medium" onclick="removeNewsItemConfirmed()" value="Yes"/> <input type="button" class="button red medium" value="No" onclick="resetContentBox();"/></div>');
$("#whiteCoverContainer").fadeIn();
}
function removeNewsItemConfirmed(){
$('.markedForDeletion').remove();
}
总的来说,有更好的方法可以解决所有这些问题,但希望这会让你前进。