选择属性的一部分--JQuery

时间:2014-11-11 17:08:51

标签: javascript jquery html

我需要从属性中获取数字(数字是动态的)。按钮/锚点如下所示:

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

我需要剖析的部分是&#39; bc_inventorybundle_menu_product_0&#39; 我只想要这个号码,用于另一个功能(删除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&#39>

所以用户点击删除按钮 bc_inventorybundle_menu_product_0 然后jQuery删除&lt; li id =&#34; menuitem0_dish&#34;&gt;

我无法在按钮上添加ID,因此我必须使用按钮的属性。我确信你可以告诉我在JS / JQuery方面是一个完整的菜鸟。

修改

阅读完所有答案后,我觉得我可能需要详细说明一下。

我认为最大的问题是在点击Button / Anchor时注册。

我目前拥有的是这个,我知道这一定是错的:

  $(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);
       }

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

4 个答案:

答案 0 :(得分:2)

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

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);
});

以下是fiddle来演示

答案 1 :(得分:2)

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

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/

答案 2 :(得分:1)

也许是这样的?

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

这里是一个jsfiddle 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");

答案 3 :(得分:1)

考虑到您要使用&#34;数据解析属性 - *&#34;名:

function getNum(element, dataName, dataPrefix) {
    var num = element.data(dataName).replace(dataPrefix, "");
    return num;
}
console.log(getNum($(".btn"), "field", "bc_inventorybundle_menu_product_"));