簡體   English   中英

選擇屬性的一部分-JQuery

[英]Select Part of a Attribute - JQuery

我只需要從屬性中獲取數字(數字是動態的)。 按鈕/錨看起來像這樣:

<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上效果很好,但是我似乎無法讓它在Attributes而不是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);
       }

從其他方面來看,這給了我一個'無法識別的表達式:data(“ field”)'的錯誤。

您是否嘗試過選擇實際數據屬性:

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/

也許是這樣的嗎?

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

考慮到您要解析具有“ data- *”名稱的屬性:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM