Несколько вопросов jQuery
Всем привет! :yes:
В данный момент разрабатываю сайт и сталкиваюсь с различными проблемами, может даже элементарными. Но знаний не хватает, для их решения, а Google ищет не совсем то, что нужно :-E Дабы Вы не думали, что я пользуюсь Вашим гостеприимством, буду показывать, как я пытался, то или иное сделать. Но в некоторых случаех, я был дуб дубом :( Сообственно вопросы. 1. Сначала самый простой вопрос. Имеем: <td width="20%" class="gTableSubTop" align="center"> <td width="8%" class="gTableSubTop" align="center"> <td width="8%" class="gTableSubTop" align="center"> Как к ним обратиться, если у них один класс? Единственное, что их различает, это width. Делал так: $("td.gTableSubTop[width='8%']").attr("width", "20%"); Но ничего не работает, вообще все скрипты перестают работать, после этого. Мне это нужно для того, чтобы поменять размеры td.gTableSubTop. И не искать их через .eq(), ведь на форуме могут происходить изменения из админ-панели. P.S.: Ещё, лучше добавить туда .each() 2. Второй вопрос. Нужно найти div.funcBlock, удалить его и два <br>, что после него. Как это сделать? Кааак? :( 3. Ещё один вопрос Имеем класс td.forumLastPostTd, в нём следующее содержимое: <a title="К последнему сообщению" class="forumLastPostLink" href="#">Вторник, 30.10.2012, 09:56</a> <a href="#"> <img alt="" title="К первому непрочитанному сообщению" src="#"> </a> <br> Тема: <a class="forumLastPostLink" href="#">Предложения</a> <br> Сообщение от: [JS]<span class="lastPostUser"> <a class="lastPostUserLink" href="#">User</a> </span> Нужно сделать, чтобы было примерно так: <td class="forumLastPostTd"><a title="К последнему сообщению" class="forumLastPostLink" href="#">Вторник, 30.10.2012, 09:56</a> <a href="#"> <img alt="" title="К первому непрочитанному сообщению" src=""> </a> <br> <span class="lastPostUser"> <a class="lastPostUserLink" href="#">User</a> </span> </td> Т.е. из основного варианта удалить <br>, Тема: и ссылку с классом a.forumLastPostLink <br> Тема: <a class="forumLastPostLink" href="#">Предложения</a> и текст - Сообщение от: Этот вопрос, один из самых важных! :cray: 4. Последний вопрос :thanks: :thanks: :thanks: Имеет стандартный вид статистики форума: ![]() Вот его код: <style>.gTableRight {display:none;}</style><div class="gDivLeft"> <div class="gDivRight"> <table border="0" width="100%" cellspacing="1" cellpadding="0" class="gTable"> <tbody> <tr> <td colspan="2" class="gTableTop"> <div style="float:right" class="gTopCornerRight"></div> Дополнительная информация </td> </tr> <tr> <td colspan="2" class="gTableSubTop"> Посетители: <b>1</b> (участников - <b>1</b>, гостей - <b>0</b>) </td> </tr> <tr> <td width="7%" align="center" class="gTableRight" style="padding:7px;"> <img alt="" style="margin:0;padding:0;border:0;" title="Посетители" src="#"> </td> <td class="gTableBody1" style="padding:10px;"> <div class="statsRecord"> Рекорд посещаемости форума <b>3</b> зафиксирован Вторник, 12:02, 30.10.2012. </div> <a class="groupAdmin" href="#" >Касти_</a> </td> </tr> <tr> <td colspan="2" class="gTableSubTop">Статистика форума</td> </tr> <tr> <td align="center" class="gTableRight" style="padding:7px;"> <img alt="" style="margin:0;padding:0;border:0;" title="Статистика форума" src="#"> </td> <td class="gTableBody1" style="padding:10px;"> Всего создано <b>16</b> тем, в которые добавлено <b>15</b> ответов. <br> Зарегистрировано <b>2</b> участников. Приветствуем нового участника <b><a class="lastUserLink" href="#">Витто_</a></b>. </td> </tr> <tr> <td colspan="2" class="gTableSubTop">Поздравляем с Днем Рождения!</td> </tr> <tr> <td align="center" class="gTableRight" style="padding:7px;"> <img alt="" style="margin:0;padding:0;border:0;" title="Поздравляем с Днем Рождения!" src="#"> </td> <td class="gTableBody1" style="padding:10px;"> <div class="birthdaysBlock"> <a class="userBirthdayLink" href="#">User</a> <span class="userAge">(18)</span> </div> </td> </tr> </tbody> </table> </div> </div> Нужно немного изменить его до такого состояния: ![]() Код: <div class="gDivLeft"> <div class="gDivRight"> <table border="0" width="100%" cellspacing="1" cellpadding="0" class="gTable"> <tbody> <tr> <td colspan="2" class="gTableTop"> <div style="float:right" class="gTopCornerRight"></div> Дополнительная информация </td> </tr> <tr> <td colspan="2" class="gTableSubTop">Статистика форума: </td> </tr> <tr> <td width="7%" align="center" class="gTableRight" style="padding:7px;"> <img alt="" style="margin:0;padding:0;border:0;" title="Посетители" src="#"> </td> <td class="gTableBody1" style="padding:10px;"> Тем: 16 | Сообщений: 15 | Всего пользователей: 2 | Онлайн: 1 <br> Приветствуем нового пользователя: <a href="#">User_2</a> </td> </tr> <tr> <td colspan="2" class="gTableSubTop">Сегодня день рождение у:</td> </tr> <tr> <td align="center" class="gTableRight" style="padding:7px;"> <img alt="" style="margin:0;padding:0;border:0;" title="Статистика форума" src="#"> </td> <td class="gTableBody1" style="padding:10px;"> <a href="#">User</a> (18) </td> </tr> </tbody> </table> </div> </div> Хочу заменить, когда ни у кого нету дня рождения (т.е. не находится .gTableSubTop с текстом внутри: Поздравляем с Днем Рождения!). Нужно писать вместо ников именинников следующее: Сегодня никто не празднует своё день рождение. И второе, что хотелось бы затронуть.. .gTableSubTop стоит буквально везде! Если что-то менять приходиться, нужно обращаться к нему на прямую.. тоже самое, что и с width. Боже мой. Сколько я настрочил. Дабы не плодить темы, решил сразу в одной обо всём спросить.. Может это и наглость, но пожалуйста, помогите сделать. У меня "тупо силёнок" не хватит. Больше вопросов, дай бог, не последует. С огромным Уважением Дмитрий! :thanks: P.S.: Заранее спасибо! |
Хоть и сам начинающий, но рискну попробовать помочь.
1. Добавить еще классы <td width="20%" class="gTableSubTop anotherclass" align="center"> <td width="8%" class="gTableSubTop anotherclass2" align="center"> и обращаться через них. А вообще я наверное не совсем правильно понял. Вы не имеете возможность редактировать html и хотите сделать преобразования с помощью jQuery? Если вы желаете задать ширину 20%, и другие ячейки ее уже имеют, почему не просто $("td.gTableSubTop").attr("width", "20%"); Ну или ищите тогда по содержимому td.gTableSubTop, с помощью селектора по содержимому :contains(str) http://jquery.page2page.ru/index.php5/%D0%A1%D0%B5%D0%BB%D0%B5%D0%BA%D1%82%D0%BE%D1%80_% D0%BF%D0%BE_%D1%82%D0%B5%D0%BA%D1%81%D1%82%D1%83 2. $('div.funcBlock').nextUntil(".someblock").remove(); $('div.funcBlock').remove(); .someblock - элемент после <br/> 3. Как-то так наверное: $('a.forumLastPostLink').prevUntil("[href = #").remove(); $('a.forumLastPostLink').nextUntil('.lastPostUser').remove(); $('a.forumLastPostLink').remove(); var html = $('td.forumLastPostTd').html(); html = html.replace(\(Тема:|Сообщение от:)\,""); $('td.forumLastPostTd').html(html); |
Цитата:
$("td.gTableSubTop[width^='8']").attr("width", "20%") |
<td class="forumLastPostTd"> <a title="К последнему сообщению" class="forumLastPostLink" href="#">Вторник, 30.10.2012, 09:56</a> <a href="#"> <img alt="" title="К первому непрочитанному сообщению" src="#"> </a> <br> Тема: <a class="forumLastPostLink" href="#">Предложения</a> <br> Сообщение от: <span class="lastPostUser"> <a class="lastPostUserLink" href="#">User</a> </span> </td> <script> $("td.forumLastPostTd").each(function () { var a=$(this).html(); $(this).replaceWith(a.replace(/<br?.>[\s\S]*?<br?.>/igm,"<br/>")); }); </script> |
Цитата:
$('.funcBlock + br + br, .funcBlock + br, .funcBlock').remove(); Цитата:
Удалить текст можно попробовать так (на скорую руку вариант): $('.forumLastPostTd').html(document.getElementsByC lassName('forumLastPostTd')[0].innerHTML.replace('\Тема:\', '')) _______________________ С чётвертым вопросом, там нужно по eq() делать, так как на юкозе, поскольку я знаю, там .gTable, gDivRight и т.д. - они идут в каждом разделе форума. |
Здравствуйте.
Пытаюсь переделать нижеследующий скрипт под свои цели. Скрипт - довольно стандартное решение для появления на странице кнопки "вверх" при скроллинге. Цели - нужно сделать, чтобы при скроллинге вниз в определенный момент появлялся футер и фиксировался внизу экрана. При прокрутке страницы к началу футер должен благополучно пропадать. Т.к. в JS я не силен, а решить подобное средствами CSS не смог, решил обратиться к готовому и подходящему (на мой взгляд) решению. В рабочий вид пока привести не смог. Буду благодарен за помощь. Скрипт: var scrolltotop={ //startline: Integer. Number of pixels from top of doc scrollbar is scrolled before showing control //scrollto: Keyword (Integer, or "Scroll_to_Element_ID"). How far to scroll document up when control is clicked on (0=top). setting: {startline:100, scrollto: 0, scrollduration:1000, fadeduration:[500, 100]}, controlHTML: '<img src="/images/up.png" style="width:48px; height:48px" />', //HTML for control, which is auto wrapped in DIV w/ ID="topcontrol" controlattrs: {offsetx:5, offsety:5}, //offset of control relative to right/ bottom of window corner anchorkeyword: '#top', //Enter href value of HTML anchors on the page that should also act as "Scroll Up" links state: {isvisible:false, shouldvisible:false}, scrollup:function(){ if (!this.cssfixedsupport) //if control is positioned using JavaScript this.$control.css({opacity:0}) //hide control immediately after clicking it var dest=isNaN(this.setting.scrollto)? this.setting.scrollto : parseInt(this.setting.scrollto) if (typeof dest=="string" && jQuery('#'+dest).length==1) //check element set by string exists dest=jQuery('#'+dest).offset().top else dest=0 this.$body.animate({scrollTop: dest}, this.setting.scrollduration); }, keepfixed:function(){ var $window=jQuery(window) var controlx=$window.scrollLeft() + $window.width() - this.$control.width() - this.controlattrs.offsetx var controly=$window.scrollTop() + $window.height() - this.$control.height() - this.controlattrs.offsety this.$control.css({left:controlx+'px', top:controly+'px'}) }, togglecontrol:function(){ var scrolltop=jQuery(window).scrollTop() if (!this.cssfixedsupport) this.keepfixed() this.state.shouldvisible=(scrolltop>=this.setting.startline)? true : false if (this.state.shouldvisible && !this.state.isvisible){ this.$control.stop().animate({opacity:1}, this.setting.fadeduration[0]) this.state.isvisible=true } else if (this.state.shouldvisible==false && this.state.isvisible){ this.$control.stop().animate({opacity:0}, this.setting.fadeduration[1]) this.state.isvisible=false } }, init:function(){ jQuery(document).ready(function($){ var mainobj=scrolltotop var iebrws=document.all mainobj.cssfixedsupport=!iebrws || iebrws && document.compatMode=="CSS1Compat" && window.XMLHttpRequest //not IE or IE7+ browsers in standards mode mainobj.$body=(window.opera)? (document.compatMode=="CSS1Compat"? $('html') : $('body')) : $('html,body') mainobj.$control=$('<div id="topcontrol">'+mainobj.controlHTML+'</div>') .css({position:mainobj.cssfixedsupport? 'fixed' : 'absolute', bottom:mainobj.controlattrs.offsety, right:mainobj.controlattrs.offsetx, opacity:0, cursor:'pointer'}) .attr({title:'Scroll Back to Top'}) .click(function(){mainobj.scrollup(); return false}) .appendTo('body') if (document.all && !window.XMLHttpRequest && mainobj.$control.text()!='') //loose check for IE6 and below, plus whether control contains any text mainobj.$control.css({width:mainobj.$control.width()}) //IE6- seems to require an explicit width on a DIV containing text mainobj.togglecontrol() $('a[href="' + mainobj.anchorkeyword +'"]').click(function(){ mainobj.scrollup() return false }) $(window).bind('scroll resize', function(e){ mainobj.togglecontrol() }) }) } } scrolltotop.init() С уважением, Сергей |
EXxX,
Вот, на скорую руку написал: <div id="upButton" style="position:fixed; z-index:10; right:20px; bottom:20px; display:none"><a href="#top">Вверх!</a></div> $(window).bind('scroll', function(){ if($(this).scrollTop() > 300){$('#upButton').fadeIn(500);} else{$('#upButton').fadeOut(500);}}) |
Ruslan_xDD, спасибо большое за то, что помогаете. Правда, я, похоже, объяснил коряво - хотел, чтобы по принципу кнопки работал футер. При загрузке страницы его нет, а при скроллинге вниз он появляется с определенного места. При скроллинге вверх - он снова пропадает с того же места. Это я на всякий случай...
Ваш код у меня, к сожалению, не срабатывает. В любом случае - спасибо за помощь! |
EXxX, странно, у меня всё работает. Работает всё именно так, как Вы хотите. Может быть Вы что-то не так вставили?
|
Тестил у себя на сайте, вот, можете даже посмотреть: http://mkheroes.ru/index/test/0-269
При прокрутке вниз - справа внизу, над часами появляется ссылка "Вверх". |
Часовой пояс GMT +3, время: 05:24. |