Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.11.2012, 15:22
DS_ DS_ вне форума
Новичок на форуме
Отправить личное сообщение для DS_ Посмотреть профиль Найти все сообщения от DS_
 
Регистрация: 30.10.2012
Сообщений: 5

Несколько вопросов jQuery
Всем привет!

В данный момент разрабатываю сайт и сталкиваюсь с различными проблемами, может даже элементарными. Но знаний не хватает, для их решения, а Google ищет не совсем то, что нужно

Дабы Вы не думали, что я пользуюсь Вашим гостеприимством, буду показывать, как я пытался, то или иное сделать. Но в некоторых случаех, я был дуб дубом

Сообственно вопросы.

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>

и текст - Сообщение от:

Этот вопрос, один из самых важных!

4. Последний вопрос
Имеет стандартный вид статистики форума:


Вот его код:
<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.


Боже мой. Сколько я настрочил. Дабы не плодить темы, решил сразу в одной обо всём спросить.. Может это и наглость, но пожалуйста, помогите сделать. У меня "тупо силёнок" не хватит. Больше вопросов, дай бог, не последует.

С огромным Уважением Дмитрий!

P.S.: Заранее спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 05.11.2012, 01:53
Интересующийся
Отправить личное сообщение для StanislavZ Посмотреть профиль Найти все сообщения от StanislavZ
 
Регистрация: 04.11.2012
Сообщений: 10

Хоть и сам начинающий, но рискну попробовать помочь.
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);

Последний раз редактировалось StanislavZ, 05.11.2012 в 02:31.
Ответить с цитированием
  #3 (permalink)  
Старый 05.11.2012, 04:03
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от DS_
<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[width^='8']").attr("width", "20%")
Ответить с цитированием
  #4 (permalink)  
Старый 05.11.2012, 10:08
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<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>

Последний раз редактировалось Deff, 09.11.2012 в 16:02.
Ответить с цитированием
  #5 (permalink)  
Старый 09.11.2012, 13:16
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Цитата:
2. Второй вопрос. Нужно найти div.funcBlock, удалить его и два <br>, что после него. Как это сделать? Кааак?
Эм.. может как-то так:
$('.funcBlock + br + br, .funcBlock + br, .funcBlock').remove();

Цитата:
3. Ещё один вопрос Имеем класс td.forumLastPostTd, в нём следующее содержимое:
$('.forumLastPostTd br:eq(0), .forumLastPostTd .forumLastPostLink').remove();

Удалить текст можно попробовать так (на скорую руку вариант):
$('.forumLastPostTd').html(document.getElementsByC lassName('forumLastPostTd')[0].innerHTML.replace('\Тема:\', ''))

_______________________
С чётвертым вопросом, там нужно по eq() делать, так как на юкозе, поскольку я знаю, там .gTable, gDivRight и т.д. - они идут в каждом разделе форума.
Ответить с цитированием
  #6 (permalink)  
Старый 09.11.2012, 14:48
Новичок на форуме
Отправить личное сообщение для EXxX Посмотреть профиль Найти все сообщения от EXxX
 
Регистрация: 09.11.2012
Сообщений: 4

Здравствуйте.
Пытаюсь переделать нижеследующий скрипт под свои цели.
Скрипт - довольно стандартное решение для появления на странице кнопки "вверх" при скроллинге.
Цели - нужно сделать, чтобы при скроллинге вниз в определенный момент появлялся футер и фиксировался внизу экрана. При прокрутке страницы к началу футер должен благополучно пропадать.
Т.к. в 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()

С уважением,
Сергей
Ответить с цитированием
  #7 (permalink)  
Старый 09.11.2012, 15:45
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

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);}})
Ответить с цитированием
  #8 (permalink)  
Старый 09.11.2012, 16:13
Новичок на форуме
Отправить личное сообщение для EXxX Посмотреть профиль Найти все сообщения от EXxX
 
Регистрация: 09.11.2012
Сообщений: 4

Ruslan_xDD, спасибо большое за то, что помогаете. Правда, я, похоже, объяснил коряво - хотел, чтобы по принципу кнопки работал футер. При загрузке страницы его нет, а при скроллинге вниз он появляется с определенного места. При скроллинге вверх - он снова пропадает с того же места. Это я на всякий случай...
Ваш код у меня, к сожалению, не срабатывает. В любом случае - спасибо за помощь!
Ответить с цитированием
  #9 (permalink)  
Старый 09.11.2012, 16:17
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

EXxX, странно, у меня всё работает. Работает всё именно так, как Вы хотите. Может быть Вы что-то не так вставили?
Ответить с цитированием
  #10 (permalink)  
Старый 09.11.2012, 16:21
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Тестил у себя на сайте, вот, можете даже посмотреть: http://mkheroes.ru/index/test/0-269
При прокрутке вниз - справа внизу, над часами появляется ссылка "Вверх".
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несколько строк из mootols в jquery Ingiborn jQuery 15 24.01.2012 15:10
Конвертировать несколько строк jquery на mootools pro_xaoc jQuery 5 13.04.2011 20:19
Несколько вопросов про jquery от новичка Delfi jQuery 3 24.11.2010 10:55
Несколько вопросов про таймер ВэйДлин Общие вопросы Javascript 19 06.08.2010 01:16
Вопросов несколько, так что опишу их дальше=) TrooMan Javascript под браузер 25 23.03.2010 19:02