Javascript 使用jquery获取数据目标并放入var

Javascript 使用jquery获取数据目标并放入var,javascript,jquery,target,Javascript,Jquery,Target,我想这是一个非常基本的问题,但我真的没有让它起作用 在打开模式弹出窗口之前,我用js读取了三个数据目标 var x = 2; $('#confirm-delete').on('show.bs.modal', function(e) { $(this).find('.btn-ok').attr('onclick', 'location.href=\'' + $(e.relatedTarget).data('href') + '\''); $(this).find('input.timee').va

我想这是一个非常基本的问题,但我真的没有让它起作用

在打开模式弹出窗口之前,我用js读取了三个数据目标

var x = 2;
$('#confirm-delete').on('show.bs.modal', function(e) {
$(this).find('.btn-ok').attr('onclick', 'location.href=\'' + $(e.relatedTarget).data('href') + '\'');
$(this).find('input.timee').val($(e.relatedTarget).data('timess'));
$(this).find('input.prodtotext').val($(e.relatedTarget).data('prodid'));
$("#proddropchange").val(x.toString()).trigger('change');
});
这段代码工作正常,但我想删除第4行,在该行中,我将数据目标“data prodid”放入输入“prodtotext”。作为回报,我想读取数据目标“data prodid”,并将该值放入“var x=2”

使用这个值,我设置了一个下拉列表的预选值,它在每个打开的模式弹出窗口上都是不同的

我认为应该起作用的是:

$('#confirm-delete').on('show.bs.modal', function(e) {
$(this).find('.btn-ok').attr('onclick', 'location.href=\'' + $(e.relatedTarget).data('href') + '\'');
$(this).find('input.timee').val($(e.relatedTarget).data('timess'));
$("#proddropchange").val(x.toString()).trigger('change');
var x = $(this).data("prodid");
});

您需要在函数外部声明x

var x;
$('#confirm-delete').on('show.bs.modal', ....
忠告:

1. Cache $ elements in var $this = $(this);
2. $(this).find('.btn-ok').on('click', function(){ location.href = ....})

终于找到了我的解决办法。谢谢你的建议

$('#confirm-delete').on('show.bs.modal', function(e) {
$(this).find('.btn-ok').attr('onclick', 'location.href=\'' + $(e.relatedTarget).data('href') + '\'');
$(this).find('input.timee').val($(e.relatedTarget).data('timess'));
thisdata = $(e.relatedTarget).data('prodid');
$("#proddropchange").val(thisdata.toString()).trigger('change');

您的
x
是在尝试使用它的行之后立即定义的,这是一种代码味道。您还验证了
e.relatedTarget
是同一件事吗?1。是的,并且不是在我的实际代码中。2.不。好的,e.relatedTarget,这是一个不同的问题,请参阅我的解决方案。很高兴你找到了答案:)当我单击触发器打开模式弹出窗口时,这会导致错误。