选择“属性的一部分-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上工作得很好,但我似乎无法让它在属性而不是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");
相关文章:
- PHP/Ajax/jquery/JON-在Ajax Post之后将echo文本中的一部分作为变量返回
- JQuery/JavaScript - 突出显示输入或文本区域中的一部分文本
- 如何用jQuery替换HTML标签的一部分
- 尝试在 jquery ajax 帖子中将变量设置为URL 的一部分
- 只是 JQuery 可执行文件的一部分.当直接粘贴到HTML中时,一切正常(window.location)
- 如何使用 jquery 刷新页面的一部分
- 使用 jquery 替换 href 的一部分
- JQuery获取字符串的一部分
- jQuery的一部分未执行
- 如何使用jQuery动态替换类的一部分
- 如何在数组jQuery中查找字符串的一部分
- 如何使用 JQuery 使表行的一部分可单击
- 在jQuery中,只从句子中获取单词或数字的一部分
- jQuery - 获取字符串的一部分
- jQuery,从变量调用数组对象的一部分
- Jquery 加载外部 HTML 的一部分
- 如何使用 jQuery 从 URL 中删除 URL 的一部分
- 使用Ajax更新页面的一部分,而不使用jQuery
- 如何使用正则表达式或 jQuery 检索 URL 的最后一部分
- 使用 jQuery $.post() 方法获取另一个网页的一部分