У меня есть проблема с добавлением моих элементов с различным числовым идентификатором к ближайшему div к элементу (link) с тем же числовым значением, что и href? Большое спасибо.
JSFiddle: пример
Мой Jquery Попробуйте без успеха, потому что я застрял:
$('.pagination').each(function(){
var num_id = $(this).attr('id').match(/\d+/);
if($('.ui-body h2 a').attr('href').indexOf(num_id) != -1){
$('.ui-body h2 a').closest('<div>').append($(this));
}
});
HTML:
<div id="pagination65" class="pagination"></div> <!-- genereate by php function -->
<div id="pagination26" class="pagination"></div> <!-- same with different number at end -->
<div class="col-bottom-2">
<div class="ui-body" style="background-color: #FCFCFC;"> <!-- This is div here I need append those div with same ID as href number in link below -->
<h2 class="main" style="color: #236EE8;">
<a class="ui-link" href="/cz/cs/65_chystane-akce.html" style="color: #236EE8;"> Chystané akce </a>
<a class="small ui-link" href="/cz/cs/65_chystane-akce.html" style="color: #236EE8; float:right;"> >> </a>
</h2>
</div>
<div class="ui-body" style="background-color: #F6F6FD;"></div>
<div class="ui-body" style="background-color: #FCFCFC;"></div>
<div class="ui-body" style="background-color: #F6F6FD;"></div>
</div>
У вас есть 1 ошибка и одна незавершенная строка кода.
Вы ошибаетесь в строке 4 вашего JS. Вам не хватает простых или двойных кавычек в селекторе:
$('.ui-body h2 a').closest('<div>').append($(this));
Вы не полный код поступает из части match()
. match()
возвращает массив совпадений. Поскольку у вас есть только одно совпадение (как не определяя флаг g
и только имея один экземпляр цифр), вам нужно сделать num_id[0]
в этой строке:
if($('.ui-body h2 a').attr('href').indexOf(num_id[0]) != -1){
Надеюсь, это поможет.
Вы также можете упростить процесс, выполнив следующие действия:
$('.ui-body h2 a[href*=' + num_id[0] + ']').append($(this));
То, как вы это делаете, ошибочно, потому что, когда у вас есть несколько результатов от селектора, и вы пытаетесь получить атрибут из этого выбора, jQuery сосредоточится на том, что он найдет первым, и забыть об остальном.
Полный код JS:
$('.pagination').each(function () {
var num_id = $(this).attr('id').match(/\d+/);
$('.ui-body h2 a[href*=' + num_id[0] + ']').append($(this));
});
В вашем коде были две небольшие проблемы.
1. Ваш num_id возвратил объект, поэтому я разобрал его в int
2. у вас отсутствовали одинарные кавычки в селекторе запросов внутри оператора if
$('.pagination').each(function(){
var num_id = $(this).attr('id').match(/\d+/);
num_id = parseInt(num_id[0],10);
if($('.ui-body h2 a').attr('href').indexOf(num_id) != -1){
$('.ui-body h2 a').closest('div').append($(this));
}
});
увидел это, прежде чем добавить скрипку, вот мой jsbin http://jsbin.com/cajux/1/edit?html,js,output
$('.ui-body h2 a[href*=' + num_id + ']').parent($('[class^=col-bottom-]')).append($(this));
Он добавляется после close <элемент, а не до close родительского элемента div?