【问题标题】:In jQuery how do I get an id from an attribute if I can't use 'this'?在 jQuery 中,如果我不能使用“this”,如何从属性中获取 id?
【发布时间】:2017-03-07 20:22:20
【问题描述】:

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

我正在使用一个名为 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 函数将与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: Unexpected identifier

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

【问题讨论】:

  • 试试ele.data("id")

标签: javascript jquery html ajax jquery-plugins


【解决方案1】:

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

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

注意:这是一个 ES6 特性

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      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 标记?

      更新

      那么试试这个方法:

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

      【讨论】:

      • HTML 已添加,请检查。谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-15
      • 2016-10-23
      • 1970-01-01
      • 1970-01-01
      • 2015-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多