2014-11-24 2 views
-1

Страница продукта на моем веб-сайте отображает #productID в строке i.e «ID продукта: 743961». Используя jQuery, я хочу взять эту строку #productID и сравнить ее с массивом идентификаторов. Если #productID соответствует идентификатору внутри массива, я хочу добавить сообщение.JQuery, если строка соответствует значению в массиве

<div id="productID"> Product ID: 743961 </div> 

Сначала я пытался сделать следующее, но изо всех сил старался получить желаемые результаты.

var myArray = [ 743961, 743963, 743965 ]; 
$("#prod_code:contains('myArray')").css("text-decoration", "underline"); 

В моем массиве более 2000 наименований, поэтому это может быть не лучшее решение. Я знаю, что Ajax будет лучшим решением, но я не смогу использовать его в этом экземпляре.

ответ

3

С таким большим массивом кажется, что AJAX будет лучшим решением. Однако, если вы должны использовать этот шаблон, вам сначала нужно получить значение productId из текста элемента, а затем вы можете определить, существует ли он в массиве. Что-то вроде этого:

var productId = $.trim($('#productID').text().split(':')[1]); 
if ($.inArray(productId, myArray) >= 0) 
    $('#prod_code').css('text-decoration', 'underline'); 

Это, очевидно, довольно простой пример, вы, скорее всего, потребуется больше проверки на экстрагирования PRODUCTID, чтобы сделать его более устойчивым.

+0

Мне нравится это лучше, чем мое решение, +1. Запуск тысяч селекторных матчей будет дорогостоящим. – Barmar

+0

Спасибо за ответ Рори. Я знаю, что Ajax будет лучшим решением для этого примера, но я не могу использовать его в этом экземпляре, поскольку у меня ограниченный доступ к FTP. – Liondedan

+0

Вам нужно исправить идентификатор, а также оператор if. $ .inArray возвращает -1, если не найден, но индекс в противном случае. Итак, в вашем примере, если массив соответствовал первому элементу, вы получили бы 0 возвращенных и ложных, если хотите true. Кроме того, trim возвращает строку. Как это http://jsfiddle.net/j08691/nn9swwra/ – j08691

Смежные вопросы