我需要从属性中获取数字(数字是动态的)。按钮/锚点如下所示:
<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;
答案 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;
}
答案 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_"));