选择“属性的一部分-JQuery”

Select Part of a Attribute - JQuery

本文关键字:-JQuery 一部分 属性 选择      更新时间:2023-09-26

我只需要从属性中获取数字(数字是动态的)。按钮/锚看起来像这样:

<a href="#" class="btn btn-danger btn-small" data-removefield="collection" data-field="bc_inventorybundle_menu_product_0">Delete Dish</a>

我需要剖析的部分是这个位'bc_inventorybundle_menu_product_0'我只想要这个数字,用于另一个函数(删除ID为menuitem0_dish的LI)

我在其他地方选择ID时使用的代码是:

  function getNum(element, attrPrefix) {
      //set prefix, get number
      var prefix = attrPrefix;
      var num = element.attr("id").substring((prefix.length));
      return num;
  }

它在ID上工作得很好,但我似乎无法让它在属性而不是ID的上工作

因此,用户单击删除按钮bc_inventorybundle_menu_product_0,然后jQuery删除<li id="menuitem0_dish">

我无法向按钮添加ID,所以我必须使用按钮的属性。我相信,当谈到JS/JQuery时,你可以看出我是个十足的傻瓜。

编辑

看完所有的答案后,我觉得我可能需要详细阐述一下。

我认为最大的问题是在点击按钮/锚点时注册。

我目前的情况是,我知道这一定是错误的:

  $(document).on('click', 'data("field")', function(event) {
       deleteDish(this);
  });
  function getbutNum(element, attrPrefix) {
       //set prefix, get number
       var prefix = attrPrefix;
       var butnum = element.data("field").substring(prefix.length); //Changed as per suggestions
       return butnum;
  }
  function deleteDish(field) {
       var numbut = getbutNum();
       //Delete the UL/LI
       console.log("Num But" + numbut);
       }

除此之外,这给了我一个错误"无法识别的表达式:数据("字段")"

您是否尝试选择实际的数据属性:

var num = element.attr("data-field").substring(prefix.length);

或者:

var num = element.data("field").substring(prefix.length);

编辑

首先在锚点元素中添加一个类(我假设你有不止一个):

<a href="#" class="btn btn-danger btn-small delete-dish" data-removefield="collection" data-field="bc_inventorybundle_menu_product_0">Delete Dish</a>

然后:

$(".delete-dish").on("click", function (e) {
    e.preventDefault();
    var fieldData = $(this).data("field"),
        num = fieldData.substring(fieldData.lastIndexOf("_") + 1);
    console.log("Num But" + num);
});

下面是演示的小提琴

使用包含输入的属性名称应该有效:

function getNum(element, attrPrefix) {
      //set prefix, get number
      var prefix = attrPrefix;
      var num = element.attr("data-field").substring((prefix.length));
      return num;
}

http://jsfiddle.net/zf3hmo4q/

考虑到您想要用"data-*"名称解析属性:

函数getNum(元素,dataName,dataPrefix){var num=元素.data(dataName).replace(dataPrefix,");return num;}console.log(getNum($(".btn"),"field","bc_inventorybundle_menu_product_");

也许是这样的?

var getNumberFromAttribute = function(id, field) {
    var field = $(id).data(field);
    var parts = field.split("_");
    return parts[parts.length - 1]
}

这是一把小提琴http://jsfiddle.net/o6go79cL/

更新

你可以把元素传进来。id的唯一目的是选择对象。所以你也可以做:

var getNumberFromAttribute = function(elm, field) {
    var field = $(elm).data(field);
    var parts = field.split("_");
    return parts[parts.length - 1]
}
number = getNumberFromAttribute(anchorTag, "field");