2013-10-09 7 views
0

id 정규식을 사용하여 일부 요소를 가져와야합니다. 그 source에 대한 몇 가지 해결책을 발견 :jQuery 정규식 선택기가 작동하지 않습니다.

jQuery.expr[':'].regex = function(elem, index, match) { 
    var matchParams = match[3].split(','), 
     validLabels = /^(data|css):/, 
     attr = { 
      method: matchParams[0].match(validLabels) ? 
         matchParams[0].split(':')[0] : 'attr', 
      property: matchParams.shift().replace(validLabels,'') 
     }, 
     regexFlags = 'ig', 
     regex = new RegExp(matchParams.join('').replace(/^\s+|\s+$/g,''), regexFlags); 
    return regex.test(jQuery(elem)[attr.method](attr.property)); 
} 

모두가 잘 작동의 주장하지만 간단한 코드 $(':regex[id,^node\-[0-9]+\-[0-9]+$]')를 실행하려고하면 내가 경기에 오류가 [3] 그 방법이 존재하지 않는 말을 .split. 사실 나는이 함수의 첫 번째 라인을 console.log (경기를) 추가했습니다 내가 가지고 :

[":regex", "regex", undefined, undefined, index: 0, input: ":regex[id,^node-[0-9]+-[0-9]+$]"]

내가 잘못 어떻게해야합니까

? 당신은 정규식을 지정하는 대신 ()[]을 사용했다

+0

_ "I id 정규식에 의해 일부 요소를 가져와야합니다. "_ - 할 수 있습니까? 조금 더 구체적으로? – CBroe

+0

여기서 확실하지 않은 점은 무엇입니까? 특정 패턴과 일치하는 id를 가진 요소가 있고 jquery를 사용하여 액세스해야합니다. – Moby04

답변

2

$(':regex(id,^node\-[0-9]+\-[0-9]+$)') 

데모 : 나는 또한 조언을 클래스 선택기 또는 같은 다른 빠른 선택기와 함께 사용하는 것 Fiddle

요소 선택기를 사용하거나 적어도 $ ('[id] : regex (id,^node- [0-9] + - [0-9] + $)'와 같은 속성 존재 필터를 사용하는 경우

+0

매우 효율적이지는 않지만이 특정한 경우에는 저에게 가장 좋은 방법입니다. – Moby04

관련 문제