【问题标题】:get data-target and put into var with jquery使用 jquery 获取数据目标并放入 var
【发布时间】:2018-07-20 14:42:19
【问题描述】:

我想这是一个非常基本的问题,但我真的没有解决问题。

在打开一个模态弹出窗口之前,我正在用 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');
});

此代码运行良好,但我想删除将数据目标“data-prodid”放入输入“prodtotext”的第 4 行。作为回报,我想读出数据目标“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 是在尝试使用它的行之后立即定义的。您还验证过e.relatedTargetthis 是同一个东西吗?
  • 1.是的,并且不在我的实际代码中。 2.没有。
  • 嗯 e.relatedTarget 和这不一样,这是一个问题,请参阅我的解决方案。
  • 很高兴你明白了,:)

标签: javascript jquery target


【解决方案1】:

你需要在函数外声明 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 = ....})

【讨论】:

  • 当我单击触发器打开模式弹出窗口时,这会导致错误。
【解决方案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'));
thisdata = $(e.relatedTarget).data('prodid');
$("#proddropchange").val(thisdata.toString()).trigger('change');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    相关资源
    最近更新 更多