我已经为项目编写了以下代码(使用JQuery)。我们的想法是拥有一个可以附加到"项目中的元素的函数。 div,它将返回该div的id。在这种情况下,div id将是item- [some item primary key value]。这个函数大概可以工作9/10次,但每隔一段时间它就会进入其他情况并返回false。我已经通过控制台验证了选择器的输入是成功和失败情况下完全相同的JQuery $()项。
我对JavaScript比较陌生,所以可能会有一些明显缺失的东西,但这是一些非常不寻常的行为。
var recursionCounter = 0;
function getElementID(selector, recursionDepth, searchString){
console.log(selector);
var elementID = selector.attr("id");
if(elementID === undefined){
elementID = "";
}
if(elementID.indexOf(searchString) !== -1){
elementID = elementID.split("-")[1];
return elementID;
} else {
if(recursionCounter < recursionDepth){
recursionCounter++;
return getElementID(selector.parent(), recursionDepth, searchString);
} else {
recursionCounter = 0;
alert("The element clicked does not have an associated key.");
return false;
}
}
}
以下是针对某些上下文调用此函数的代码示例。
$(document).on("click", ".edit-pencil-item", function(event) {
//Use helper function to get the id of the surrounding div then pass it to the function
var itemID = getElementID($(this), 10, "item-");
jsEditItem(itemID);
return false;
});
提前感谢您的帮助!
答案 0 :(得分:0)
如果你想得到你点击的元素的封装元素,并且你知道它应该有一个以“item-”开头的id,你应该可以按照
的方式做一些事情。$(this).closest('[id^="item-"]').attr('id')
其中说找到这个元素最接近的父元素,其id以“item-”开头,并告诉我它的id。