Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Вопрос по jQuery, проверить, соответствует ли имя файла картинки и тогда выполнить, к (https://javascript.ru/forum/jquery/83577-vopros-po-jquery-proverit-sootvetstvuet-li-imya-fajjla-kartinki-i-togda-vypolnit-k.html)

12345678 15.01.2022 20:32

Вопрос по jQuery, проверить, соответствует ли имя файла картинки и тогда выполнить, к
 
Доброго времени суток.

Было вот так
<td class="featured column-featured" data-colname="Featured product">Yes</td>


и определялось это вот так

var specific_post_edit_row = $( '#edit-' + id ),
            specific_post_row = $( '#post-' + id ),
            featured_product = false;
    if( $( '.column-featured', specific_post_row ).text() == 'Yes' ) featured_product = true;
                ...
    $( ':input[name="featured"]', specific_post_edit_row ).prop('checked', featured_product );


Я поменял логику и теперь за место слова Yes выводится картинка или несколько таковых (в зависимости от установленных чекбоксов).

Как теперь определять состояние, т.е. при наличии картинки с определённым именем (к примеру hide.png) скрипт выполнял далее свои обязанности.

P.S. Картинок в теге может быть и несколько, среди них надо обнаружить с определённым именем. Т.е. может быть и так
<td class="featured column-featured" data-colname="Featured product"><img width="32" height="32" src="https://site.ru/vote.png"><img width="32" height="32" src="https://site.ru/hide.png"><img width="32" height="32" src="https://site.ru/imagestaff.png"></td>

ksa 15.01.2022 20:57

12345678, закладываться на содержимое элемента не самый лучший подход.
Есть ведь классы, всякие data-атрибуты...

12345678 15.01.2022 20:59

ksa
Спасибо что откликнулись. Класс добавить не проблема. Как будет в варианте с классом?

ksa 15.01.2022 21:07

12345678, вариант с картинкой и классом

<!DOCTYPE html>
<html>
<head>
<script src='https://code.jquery.com/jquery-latest.min.js'></script>
<!--
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
<script src='tmp.js'></script>
-->
<style>
</style>
<script>
$(_ => {
	let o = $('.column-featured img[src$="vote.png"]')
	if (o.length) alert('ok')
	o = $('.column-featured')
	if (o.hasClass('ok')) alert('ok')
})
</script>
</head>
<body>
<table>
<td class="featured column-featured ok" data-colname="Featured product">
	<img width="32" height="32" src="https://site.ru/vote.png" />
	<img width="32" height="32" src="https://site.ru/hide.png" />
	<img width="32" height="32" src="https://site.ru/imagestaff.png" />
</td>
</body>
</html>

12345678 15.01.2022 21:17

Я модернизировал исходный код согласно примеру

if( $( '.column-featured img[src$="vote.png"', specific_post_row ) ) featured_product = true;


Но он почему то не работает....

рони 15.01.2022 21:18

Цитата:

Сообщение от 12345678
Но он почему то не работает....

Цитата:

Сообщение от 12345678
img[src$="vote.png"',

:-?

12345678 15.01.2022 21:26

Я попробовал так, но это также не помогло...

if( $( 'img[src$="vote.png"', specific_post_row ) ) featured_product = true;
Галочка всё время в состоянии "поставлена"

рони 15.01.2022 21:28

12345678,
скобку забыли!!! #5

12345678 15.01.2022 21:31

рони
Где именно?

ksa 15.01.2022 21:32

Цитата:

Сообщение от 12345678
img[src$="vote.png"

img[src$="vote.png"]

;)

12345678 15.01.2022 21:33

Сделал, но всё равно не работает. Галочка так постоянно и отображается...

if( $( 'img[src$="vote.png"]', specific_post_row ) ) featured_product = true;

12345678 15.01.2022 21:38

Мозг просто взрывается, я не пойму в чём дело. Почему текст корректно определяет, в картинки в упор не видит и отсюда некорректно начинает работать....

ksa 15.01.2022 21:38

Начнем с того что такой вариант давно не рекомендуют использовать...
Цитата:

Сообщение от 12345678
$( 'img[src$="vote.png"]', specific_post_row )

И я давал использовать не так. :nono:
У тебя получается вот что
<!DOCTYPE html>
<html>
<head>
<script src='https://code.jquery.com/jquery-latest.min.js'></script>
<!--
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
<script src='tmp.js'></script>
-->
<style>
</style>
<script>
$(_ => {
	if ($('.bla-bla-bla')) alert('ok')
	// хотя элемента такого нет
})
</script>
</head>
<body>
</body>
</html>

ksa 15.01.2022 21:39

Цитата:

Сообщение от 12345678
картинки в упор не видит

Ты не понимаешь с какими сущностями оперируешь... :-?

12345678 15.01.2022 21:41

Цитата:

Сообщение от ksa (Сообщение 543014)
Ты не понимаешь с какими сущностями оперируешь... :-?

Ну вот так вот же должно работать

if( $( '.column-featured img[src$="vote.png"]', specific_post_row ) ) featured_product = true;


Но не работает....

voraa 15.01.2022 21:49

Не большой знаток jq, но что означает $ в src$?
На ваниле было бы просто

specific_post_row.querySelector('.column-featured img[src="vote.png"]')

рони 15.01.2022 21:50

Цитата:

Сообщение от voraa
но что означает $ в src$?

в конце атрибута src значение такое - то

12345678 15.01.2022 21:57

Уф... добавил класс картинке и код подсмотрел, нагуглив по specific_post_row. Наконец то заработало как надо, радости нет предела :)

if( $( '.column-featured', specific_post_row ).find('img.classname').length !== 0 ) featured_product = true;


Спасибо всем за помощь.

ksa 15.01.2022 22:10

Цитата:

Сообщение от 12345678 (Сообщение 543015)
Ну вот так вот же должно работать
if( $( '.column-featured img[src$="vote.png"]', specific_post_row ) ) featured_product = true;

Но не работает....

Если было бы должно - работало бы. :)
if( $( '.column-featured img[src$="vote.png"]', specific_post_row ).length ) featured_product = true;

Это
$( '.column-featured img[src$="vote.png"]', specific_post_row )

В любом случае будет объект и условие
if ({}) alert('ok')

Будет работать.

ksa 15.01.2022 22:16

Цитата:

Сообщение от voraa
На ваниле было бы просто

Видишь разницу?
<!DOCTYPE html>
<html>
<head>
<script src='https://code.jquery.com/jquery-latest.min.js'></script>
<!--
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
<script src='tmp.js'></script>
-->
<style>
</style>
<script>
$(_ => {
	if ($('.bla-bla-bla')) alert('ok')
	if (document.querySelector('.bla-bla-bla')) {
		alert('ok')
	} else {
		alert('no')
	}
})
</script>
</head>
<body>
</body>
</html>

Сейчас JS хорошо продвинулся. И надобность в jQuery, наверное, начинает утихать...

ksa 15.01.2022 22:19

voraa, но аналоги работают одинаково. ;)
<!DOCTYPE html>
<html>
<head>
<script src='https://code.jquery.com/jquery-latest.min.js'></script>
<!--
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
<script src='tmp.js'></script>
-->
<style>
</style>
<script>
$(_ => {
	if ($('.bla-bla-bla')) alert('ok')
	if (document.querySelectorAll('.bla-bla-bla')) {
		alert('ok')
	} else {
		alert('no')
	}
})
</script>
</head>
<body>
</body>
</html>


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