2017-02-10 4 views
1

все это заставляет меня запутать Я пытаюсь получить атрибут привязки и заменить его на вход id таким образом, но все не работает, если у якоря есть длинный идентификатор. Как я могу получить идентификатор без знака #как получить attr id без знака #

$('.srcFilter a').click(function(e){ 
 
\t \t e.preventDefault(); 
 
\t \t var a = $(this).attr('href'); 
 
\t \t var b = a.slice(1,6); 
 
\t \t $('input').attr('id',b); 
 
\t })
a{ 
 
margin-right:10px; 
 
}
<input id="srcAll" /> 
 
<div class="srcFilter"> 
 
<a href="#item1">all</a> 
 
<a href="#item2">item</a> 
 
<a href="#item3">code</a> 
 
<a href="#itemlong">item long</a> 
 
</div>

+1

Что такое 'a. (1,6)' должно быть? Это опечатка для 'a.substr (1, 6)'? – Barmar

+1

'var a = $ (this) .attr ('href'). Replace ('#', '');' Почему бы просто не заменить его – Satpal

+0

Вы можете использовать '.substr (1)', чтобы получить все после первого персонаж. Когда вы не учитываете длину, это означает, что нужно идти в конец строки. – Barmar

ответ

2

попробовать это.

[].forEach.call(document.querySelectorAll('a'), function(e){ 
 
    e.addEventListener('click', function() { 
 
    var h = e.href; 
 
    h = h.split("#")[1]; 
 

 
    // alternatives 
 
    // h = h.substr(1, h.length); -- might not fit every situation 
 
    // h = h.match('#(.*)'); 
 
    let inp = e.parentNode.previousElementSibling; 
 
    inp.setAttribute('id', h); 
 
    inp.value = "May id is: "+h; //debugging -)) 
 
}); 
 
})
<input id="srcAll" /> 
 
<div class="srcFilter"> 
 
<a href="#item1">all</a> 
 
<a href="#item2">item</a> 
 
<a href="#item3">code</a> 
 
<a href="#itemlong">item long</a> 
 
</div>

+0

Я didnt обратите внимание, если есть альтернатива для этого, так что разделите его работу, а не используйте срез, и это очень хорошо работает. Спасибо за совет – rnDesto

2

Использование:

var b = a.substr(1); 

Когда вы выходите вне length аргумент substr(), то по умолчанию остальной части строки.

+0

Я думал, что будет использовать срез, его лучше использовать substr, спасибо за совет. Я должен быть замечен в будущем – rnDesto

2

Используйте .substr(1), чтобы получить атрибут привязки без 0-индекса '#' и добавить jquery. Проверьте результат:

$('.srcFilter a').on('click',function(e){ 
 
\t \t e.preventDefault(); 
 
\t \t var a = $(this).attr('href'); 
 
\t \t var b = a.substr(1); 
 
\t \t $('input').attr('id',b); 
 
     console.log(b); 
 
\t });
a{ 
 
margin-right:10px; 
 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
<input id="srcAll" /> 
 
<div class="srcFilter"> 
 
<a href="#item1">all</a> 
 
<a href="#item2">item</a> 
 
<a href="#item3">code</a> 
 
<a href="#itemlong">item long</a> 
 
</div>

1

Проверить это,

$('.srcFilter a').click(function(e){ 
     e.preventDefault(); 
     var a = $(this).attr('href'); 
     var b = a.substring(1); // var b = a.substr(1); 
     $('input#srcAll').attr('id',b); 
}); 

Дайте ему попробовать, он будет работать.

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