Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   A Href - JavaScrip вызов функции (https://javascript.ru/forum/jquery/26120-href-javascrip-vyzov-funkcii.html)

dillinja-dnb 27.02.2012 00:49

A Href - JavaScrip вызов функции
 
Ребят такая проблема, найти тут чего-то не смог, похожую проблему нашёл, но как свою решить не понял... опишу суть..

есть список файлов проигрывателя файлов :help:

и есть ссылки по которым активизируется плеер (ссылки с кнопкой проигрывания Плеей и стоп )

Код:

<a href="javascript:mix(0,1);"  id="mxp0"><img src="/files/play.png"/></a>

<a href="javascript:mix(1,1);"  id="mxp1"><img src="/files/play.png"/></a>

<a href="javascript:mix(2,1);"  id="mxp2"><img src="/files/play.png"/></a>

и т.д.

javascript:mix([номер трека], [то что нужно делать в функции]);


сама функция:

function mix(n,d)
{
	if (d==1)
	{
		$("#mxp"+n+" img").attr("src", "/files/pause.png");
		$("#mxp"+n).attr("href", "javascript:mix("+n+",2);");
		player.play();
	}
	else if  (d==2)
	{
		$("#mxp"+n+" img").attr("src", "/files/play.png");
		$("#mxp"+n).attr("href", "javascript:mix("+n+",1);");
		player.pause();
	}
}


тоесть что мы получаем, если мы нажимаем на ссылку с картинкой PLAY она меняется на картинку PAUSE и соответственно меняется атрибут ссылки.

Оно всё работает, но вот только с одним косяком, а именно
Первый раз если нажать на ссылку всё хорошо, но если пройтись по списку, чтобы нормально всё заработало, приходится жать на кнопку PLAY или Pause (после первого прохода) - два раза....
:blink:

ТОесть кликаю один раз на ссылку ничего не происходит, второй раз кликаю всё делается как нужно..

В чём косяк ??? честно Jquery плохо знаю, поэтому наверно и такая ерунда, помогите пожалуйста, заранее спасибо

dillinja-dnb 27.02.2012 02:10

Ураааааааааааааа
 
Урааа разобрался :))) Подскажите ребят)) насколько кривоват мой рабочий вариант???

Эту хрень :)) меняем
Цитата:

<a href="javascript:mix(0,1);" id="mxp0"><img src="/files/play.png"/></a>
<a href="javascript:mix(1,1);" id="mxp1"><img src="/files/play.png"/></a>
<a href="javascript:mix(2,1);" id="mxp2"><img src="/files/play.png"/></a>
и т.д.
НА

Цитата:

<img src="/files/play.png" class="mxp"/>
<img src="/files/play.png" class="mxp"/>
<img src="/files/play.png" class="mxp"/>
и т.д.
А теперь переписываем сам скрипт:

function mix(n,d)
{

	if (d==1)
	{
		$('.mxp').eq(n).attr("src", "/files/pause.png");
		$('.mxp').eq(n).click(function(){mix(n,2);});
		player(n).play();
	}
	else if  (d==2)
	{
		$('.mxp').eq(n).attr("src", "/files/play.png");
		$('.mxp').eq(n).click(function(){mix(n,1);});
		player(n).pause();
	}
}



:dance: :dance: :dance: :dance:

Всё работает)) знаю можно короче написать)) но написал как смог )) ааа главное всёёё сам решил !))) эхх как приятно)

T-sh 27.02.2012 02:44

на сам элемент $('.mxp').eq(n) можно повесить значение, например:

$('.mxp').data("checkplay","false"); и изменять его при клике на true. по нему же и проверять, проигрывается ли трек или на паузе..

тогда от всяких "d" избавишься :) и функция mix вообще будет не нужна.

и проверять значение переменной следует тройным равно. "==="

dillinja-dnb 28.02.2012 00:06

спасибо :) буду знать :))) буду познавать дальше :)


Часовой пояс GMT +3, время: 14:50.