Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как "красивее" передать переменные в функцию (https://javascript.ru/forum/jquery/46219-kak-krasivee-peredat-peremennye-v-funkciyu.html)

pashin76 02.04.2014 11:17

Как "красивее" передать переменные в функцию
 
Есть элементы с ID от a11 до a50

При клике на элемент a11 нужно передавать функции validate две переменных b=1 и c=1
При клике на элемент a50 нужно передавать b=5 и c=0 соответственно

В голову приходит два варианта, но оба они мне кажутся корявыми

Вариант 1:
$("#a11").click(validate(1,1));
.......
$("#a50").click(validate(5,0));


Вариант 2:
<span id="a11" onclick="validate(1,1); return false;">текст</span>
.......
<span id="a50" onclick="validate(5,0); return false;">текст</span>


Можно ли как-то выдергивать эти переменные из ID?

Octane 02.04.2014 11:29

function validate(event) {

	var $element = $(this),
		value1 = $element.data("value1"),
		value2 = $element.data("value2");
		…
}

$("#a11").click(validate);
.......
$("#a50").click(validate);

<span id="a11" data-value1="1" data-value2="1">текст</span>

<span id="a50" data-value1="5" data-value2="0">текст</span>

рони 02.04.2014 11:39

:write: чтоб неперечислять
Цитата:

$("#a11").click(validate);
.......
$("#a50").click(validate);
$("[id^='a']").click(validate);

ksa 02.04.2014 11:39

Цитата:

Сообщение от pashin76
Вариант 1:
$("#a11").click(validate(1,1));
.......
$("#a50").click(validate(5,0));

Так не будет работать... :no:

ksa 02.04.2014 11:41

Цитата:

Сообщение от pashin76
Можно ли как-то выдергивать эти переменные из ID?

Можно.
Для этого можно использовать метод
http://javascript.ru/String/substring

pashin76 02.04.2014 11:42

Цитата:

Сообщение от рони (Сообщение 305555)
:write: чтоб неперечислять

$("[id^='a']").click(validate);

Не понял, как это будет работать?

рони 02.04.2014 12:00

pashin76,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
   $(function ()
{
   function validate(event) {

	var $element = $(this),
		value1 = $element.data("value1"),
		value2 = $element.data("value2");
	   alert([value1,value2])
}

   $("[id^='a']").click(validate);
})
  </script>
</head>

<body>

<span id="a11" data-value1="1" data-value2="1">текст</span>
<span id="a50" data-value1="5" data-value2="0">текст</span>


</body>

</html>

pashin76 02.04.2014 12:52

теперь понял
всем спасибо, то что нужно


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