在jQuery中,如果我不能使用'this',如何从属性中获取id?

时间:2017-03-07 20:22:21

标签: javascript jquery html ajax jquery-plugins

感谢您查看我的问题,内容如下:

我正在使用名为Inline inline affirm的jQuery插件,它基本上只是要求用户对他们正在执行的操作进行确认(是或否)。

这是该插件的基本用法:

HTML:

<li class="msg-li-delete" data-msgid="<?php echo $msg_id_att; ?>">
          <div class="affirm light"
               data-id="<?php echo $msg_id_att; ?>"
               data-title="delete"
               data-question="are you sure?" style="display:inline-block;"></div></li>

JS:

$(".affirm").inlineAffirm({
    callback : function(ele){
        var msg_id_conf = $(".affirm").attr("data-id");
        delete_private_msg(msg_id_conf);
      }
  });

这个问题是我试图从锚标记中获取一个唯一的id,所以我可以调用delete_private_msg函数并将id作为参数,delete_private_msg函数会做一些ajax与PHP的交互以删除消息。

我点击哪个锚点无关紧要,删除的项目始终是第一个。

所以我尝试了这个:

  $(".affirm").inlineAffirm({
      var thisid = $(this).attr("data-id");
        callback : function(ele){
            var msg_id_conf = thisid;
            delete_private_msg(msg_id_conf);
          }
      });

但是我在控制台中收到以下错误:

  

126 Uncaught SyntaxError:意外的标识符

对此有任何帮助将不胜感激,我真的希望这是可以理解的。

3 个答案:

答案 0 :(得分:0)

不确定它是否正常工作,但是如果在onclick处理程序中调用了回调,那么这应该可行

$(".affirm").inlineAffirm({
    callback : (ele) => {
        var msg_id_conf = $(this).attr("data-id");
        delete_private_msg(msg_id_conf);
      }
  });

注意:这是ES6功能

答案 1 :(得分:0)

很抱歉,如果我误解了您的问题,但要获取带有jquery的元素的ID,您可以执行以下操作:

$( ".affirm" ).attr('id')

答案 2 :(得分:0)

msg_id_confthisid是否有不同类型的变量(例如一个是String而另一个是Int)?

否则,这有用吗?

  $(".affirm").inlineAffirm({
    callback : function(ele){
        var msg_id_conf = parseInt($(this).attr("data-id"));
        delete_private_msg(msg_id_conf);
      }
  });

如果这些都不起作用,你能不能在课堂上粘贴完整的html标签&#34;肯定&#34;?

更新

然后尝试这种方式:

  $(".affirm").inlineAffirm({
    var thisid = parseInt($(this).attr("data-id"));
    callback : function(ele){
        var msg_id_conf = thisid;
        delete_private_msg(msg_id_conf);
      }
  });