Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как выделить элементы id которых начинается на ...? (https://javascript.ru/forum/misc/40484-kak-vydelit-ehlementy-id-kotorykh-nachinaetsya-na.html)

borus 07.08.2013 13:45

Как выделить элементы id которых начинается на ...?
 
Здравствуйте.

Как выделить все элементы, id которых начинается например с 'shipment_id_' ?
Нужно все такие элементы сделать disabled(это радиокнопки)

ksa 07.08.2013 13:50

Цитата:

Сообщение от borus
Как выделить все элементы, id которых начинается например с 'shipment_id_' ?

Читай букварь...
http://jquery-docs.ru/Selectors/attr...attributevalue

ruslan_mart 07.08.2013 14:03

$('input:radio[id^="shipment_id_"]').attr('disabled', true);

borus 07.08.2013 17:02

Цитата:

Сообщение от ksa (Сообщение 266286)

Прочитал. Нужен двойной критерий отбора, что-то вроде такого:
$("input[id^='shipment_id_']not(id='shipment_id_1')").disabled = 'disabled';

т.е. чтобы начинался с shipment_id но не равнялся shipment_id_1.
Ругается так
Uncaught TypeError: Cannot set property 'disabled' of null
Похоже конструкция $("input[id^='shipment_id_']not(id='shipment_id_1')") неправильна.
Помогите разобраться пожалуйста

рони 07.08.2013 17:13

borus,
нет функции disabled в jquery

skrudjmakdak 07.08.2013 17:17

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"> 
<html>
	<head></head>
	<body>
		<input type="radio" id="shipment_id_1">
		<input type="radio" id="shipment_id_12">
		<input type="radio" id="shipment_id_3">
		<input type="radio" id="shipment_id_4">
		<input type="radio" id="shipment_id_5">
		
		<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
		<script type="text/javascript">
		$('input:radio[id^="shipment_id_"]').not('input:radio[id="shipment_id_1"]').attr('disabled', true);
		</script>
	</body>
</html>

рони 07.08.2013 17:19

borus,
:cray:
<!DOCTYPE html>
<html>
<head>
	<title>Site</title>
    <meta charset="utf-8">
	<script src="http://code.jquery.com/jquery-2.0.3.js"></script>
	<script type="text/javascript">
		$(document).ready(function()
		{
		   $("input[id^='shipment_id_']:not([id='shipment_id_1'])").prop('disabled', true);
		});
	</script>
</head>
<body>
 <input id="shipment_id_1" type="radio">
 <input id="shipment_id_2" type="radio">
 <input id="shipment_id_3" type="radio">
</body>
</html>

ruslan_mart 07.08.2013 17:20

$('input:radio[id^="shipment_id_"]:not([id="shipment_id_1"])').prop('disabled', true);


Или
$('input:radio[id^="shipment_id_"]').each(function() {
   if(this.id != 'shipment_id_1') this.disabled = true;
});

borus 07.08.2013 17:21

Цитата:

Сообщение от Ruslan_xDD (Сообщение 266295)
$('input:radio[id^="shipment_id_"]').attr('disabled', true);

такая запись выдает Uncaught TypeError: Cannot call method 'attr' of null - Минимизированный jquery?

ruslan_mart 07.08.2013 17:21

рони, чёрт, пока я писал - ты такой же ответ написал :D

borus 07.08.2013 17:35

Цитата:

Сообщение от рони (Сообщение 266366)
borus,
:cray:

:) благодарю. Это выдает Uncaught TypeError: Cannot call method 'prop' of null
Вы могли бы показать как это будет на чистом JS без jquery?

рони 07.08.2013 17:37

borus,
тут запускали? здесь работает?

borus 07.08.2013 17:40

Цитата:

Сообщение от Ruslan_xDD (Сообщение 266295)
$('input:radio[id^="shipment_id_"]').attr('disabled', true);

такая запись выдает Uncaught TypeError: Cannot call method 'attr' of null
Думал так сделать
document.querySelectorAll('input[id^='shipment_id_']:not([id='shipment_id_1'])').disabled = 'disabled';

не работает :)

borus 07.08.2013 17:47

Цитата:

Сообщение от рони (Сообщение 266374)
borus,
тут запускали? здесь работает?

тут работает и если я подключаю предложенный вами jquery - также. В нем вся загвоздка. на сайте используется минимизированный jQuery v1.6.4.
Не хочу большие файлы подключать. Или дело лишь в версии старой?
Может старым добрым JS покажете?

рони 07.08.2013 17:51

borus,
:cray: :cray: :cray:
<!DOCTYPE html>
<html>
<head>
	<title>Site</title>
    <meta charset="utf-8">
<script>
 window.onload =  function ()
{
  var radio = document.querySelectorAll("input[id^='shipment_id_']:not([id='shipment_id_1'])");
  for (var i=0; i<radio.length; i++)  {radio[i].disabled=!0}
}
</script>
</head>
<body>
 <input id="shipment_id_1" type="radio">
 <input id="shipment_id_2" type="radio">
 <input id="shipment_id_3" type="radio">
</body>
</html>


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