2015-10-25 3 views
3

Я вызываю функцию getParentElm(idStr,element), которая принимает идентификатор и элемент, и производит поиск в HTML дерево, пока он не находит родительский элемент, который имеет идентификатор, равный idStr.Javascript: строка регулярного выражения

телефонный код:

var s = "someId"; 
var el = getParentElm(s,element); 

Я хотел бы, чтобы параметр idStr работал со строками, которые соответствуют "someId", например, "someId123".
Я пробовал:

var s = "/someId/"; 

, но это не сработало. В идеале, я не хочу касаться функции getParentElm.

Обновление: Спасибо vbranden.
Я пробовал: var s =/someId /, и это сработало. Я поддержал ваш комментарий. Спасибо всем :)

+0

должно ли оно соответствовать некоторым данным12? или он должен работать только для someId –

+1

, функция getParentElm должна будет выполнять регулярное выражение, если вы поставляете его с регулярным выражением. если он выполняет только ===, тогда вам нужно будет изменить функцию для принятия регулярного выражения. – vbranden

+0

Согласен. Ознакомьтесь с учебником W3C по регулярному выражению JS @ http://www.w3schools.com/jsref/jsref_match.asp. Я думаю, что S должен быть var s =/someId/(без двойных кавычек) –

ответ

0

Здесь, это должно работать:

function getParentElm(idStr,element) { 
    var patt = new RegExp(idStr +".*"); 
    while(element.parentNode) 
    { 
     if(patt.test(element.parentNode.id)) 
     return element.parentNode; 
     element=element.parentNode; 
    } 
    return false; 
} 

И просто вызвать функцию таким образом:

var el = getParentElm("someId",document.getElementById('foo')); 
+1

, где это соответствует требованию ограничения допустимых идентификаторов для тех, которые начинаются с «someId»? или задать вопрос о регулярном выражении? – vbranden

+0

. * Будет соответствовать всем буквам после –

+0

@ uʍopǝpısdn, в ответ на использование должно быть регулярное выражение. * – vbranden

0

не нуждался регулярных выражений.

использовать closest для перемещения по дому и id* для соответствия идентификаторам, содержащему ваш idStr.

function getParentElm(idStr,element){ 
    return $(element).closest('[id*="' + idStr + '"]'); 
}