如何将数据值传递给jquery函数

时间:2016-11-23 03:24:21

标签: javascript jquery html symfony twig

我有这个HTML行与TWIG代码的组合:

<a href="#" class="aaa" data-redirect="{{ path('rezervace_smazat', {'terminId':rezervaceTabulka[i]['id_rezervace']}) }}"> delete </a>

该行是循环的一部分,因此在最终结果中,它可以是具有不同data-redirect属性值的多个。

我需要将data-redirect的值传递给jquery函数,但是当我点击超文本链接时只需要一个特定的值。

$(document).ready(function() {
        $('.aaa').on( "click", function(e) {
                e.preventDefault();
                $.confirm({
                        title: 'Smazat termín',
                        message: 'Opravdu chcete smazat tento termín?',
                        labelOk: 'Smazat',
                        labelCancel: 'Storno',
                        onOk: function() {
                                window.location.assign($(this).attr("data-redirect"));
                        }
                });
        });
});

除了行之外,该函数工作正常,我需要重定向到不同的URL。我需要传递给window.location.assign()函数data-redirect属性中的特定值。

实际上$(this).attr(&#34; data-redirect&#34;)不会传递属性中的值。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

尝试使用。我希望这个有所帮助。

$(this).data('redirect');

答案 1 :(得分:0)

我认为this是一个问题。对不起,我必须这样做。

我的意思是

...
onOk: function() {
  window.location.assign($(this).attr("data-redirect"));
                           ^----- may not be referring to what you think it is.
}
...

快速解决方案是改为arrow function ,如此

onOk: () => { window.location.assign($(this).attr("data-redirect")); }

如果您需要更好的支持范围,可以将变量this指定为解决方法

$(document).ready(function() {
        $('.aaa').on( "click", function(e) {
                var self = this; // <--- here 
                e.preventDefault();
                $.confirm({
                        title: 'Smazat termín',
                        message: 'Opravdu chcete smazat tento termín?',
                        labelOk: 'Smazat',
                        labelCancel: 'Storno',
                        onOk: function() {
                                window.location
                                      .assign($(self)
                                      .attr("data-redirect")); // <--- and here
                        }
                });
        });
});