2015-05-07 3 views
1

У меня есть следующий бит кода (с использованием JQuery), который я написал для проекта. Идея состоит в том, чтобы иметь функцию, которую вы можете присоединить к элементу в div «item», и он вернет идентификатор этого div. В этом случае идентификатор div будет item- [значение первичного ключа какого-либо элемента]. Эта функция работает, вероятно, 9/10 раз, но каждый раз она переходит в else else и возвращает false. Я проверил через консоль, что вход для селектора является тем же самым элементом JQuery $() как в случае успеха, так и в случае сбоев.Функция JavaScript работает только с одним и тем же входом

Я относительно новичок в 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

Может также помочь html. – DrCord

+3

Вы можете заменить большинство из них вызовом '.closest()' вероятно. – Pointy

+1

Зачем так голосует такой вопрос? Что здесь отсутствует или неясно или неполно и т. Д. И т. Д. Здесь? –

ответ

0

Если вы хотите получить герметизирующий элемент вашего щелкнутого элемента, и вы знаете, он должен иметь идентификатор, начинающийся с «item-» Вы должны быть в состоянии сделать что-то вдоль линий

$(this).closest('[id^="item-"]').attr('id') 

Каких говорит, что найти эти элементы ближайшего родителя, который имеет идентификатор, начинающийся с «item-», и сообщите мне его идентификатор.

Смежные вопросы