Проблема с функцией jQuery .change()
Я использую функцию.change() на своем сайте, нажмите здесь, чтобы пользователи могли выбрать количество своего продукта. Проблема, которую я имею, состоит в том, что моя диаграмма только связывает меня с 12 пакетами, а не с шестью. Я проверил Firebug и заметил, что JS создал две кнопки. Я считаю, что кнопка, которая ссылается на 6 пакетов, начинает перекрываться кнопкой для 12pack.
В конечном итоге я хочу, чтобы ссылки на кнопки менялись относительно цены. Кто-нибудь знает, что мне нужно, чтобы добавить мой код ниже, чтобы добиться этого?
У меня только одна кнопка ссылки, я использую движок выражений, поэтому вторая создается автоматически
<script type="text/javascript">
var message = new Array();
message[1] = "$15.00";
message[2] = "$25.00";
$(document).ready(function(){
$("#item_select").change(function()
{
var message_index
message_index = $("#item_select").val();
$(".price-item h3").empty();
if (message_index > 0)
$(".price-item h3").append(message[message_index]);
});
});
</script>
{p_cartlink}
<a href="http:// class="button_atc atc_{url_title}"></a>
{/p_cartlink}
Вопрос в том, как этот код для шаблона, я не хочу, чтобы вы назвали продукт SLEEP-12 and SLEEP-6
Мне нужно использовать идентификатор продукта. Это способ создать идентификатор потребности для каждой кнопки в JS, а затем включить и отключить кнопку. например, когда вы выбираете 6 упаковок, появляется кнопка 6 упаковок, а 12 упаковок отключается?
4 ответа
Вы можете сделать это так
$(document).ready(function() {
$("#item_select").change(function() {
var message_index
message_index = $("#item_select").val();
// get the correct button
var $button = $('.price-item right .button_atc').eq(message_index-1);
// hide button - not the correct one
$('.price-item right .button_atc').not($button).hide();
// show correct button
$button.show();
$(".price-item h3").empty();
if (message_index > 0) $(".price-item h3").append(message[message_index]);
});
});
Вместо двух кнопок ссылок на вашей странице у меня будет только одна. Затем, когда индекс изменится, я обновлю свойство href этой кнопки ссылки.
Будет ли это работать?
<select id="item_select">
<option value="6">6 pack</option>
<option value="12">12 pack</option>
</select>
$('.button_atc').bind('click',function(){
var val = $('#item_select').val();
window.location = "store.bodyworksforme.com/ShoppingCart.asp?ProductCode=SLEEP"+val;
});
Вы также можете установить идентификатор для кнопок и сделать их специфичными для продуктов, если хотите.
Это стало очень уродливым взломом, и код не проверен, но я думаю, что он должен работать.
Пожалуйста, попробуйте и дайте мне знать, если у вас есть какие-либо проблемы:
<script type="text/javascript">
var message = ["$15.00","$25.00"];
$(document).ready(function(){
// Init to make sure we display the correct button @ load
$("#item_select").trigger('change');
// The change-function
$("#item_select").on('change'.function() {
var message_index = $("#item_select").val();
var message_indexn = message_index.split(' ');
var message_id = 0;
for ($i = 0; i < message_indexn.length; i++) {
if (/^[\d]+$/.test(message_indexn[i])) {
message_id = message_indexn[i];
break;
}
}
$(".price-item h3").empty();
if (message_index > 0)
$(".price-item h3").append(message[message_index-1]);
$('.price-item .button_atc').each(function () {
if ($(this).attr('href') == 'http://store.bodyworksforme.com/ShoppingCart.asp?ProductCode=SLEEP-'+message_id) {
if ($(this).is(':hidden'))
$(this).show();
}
else {
if ($(this).is(':visible'))
$(this).hide();
}
});
});
});
</script>