2013-05-17 2 views
1
<img src="" class="className" click="" id='button4' u="button6" r="button5" l="ele1" d="" /> 

У меня есть изображение, в котором мне нужно изменить значение типа данных «U». Данные «U» были внедрены разработчиком, с которым я работаю, и мне нужно иметь возможность использовать jQuery для изменения его значения в цикле на указанной временной шкале каждые 15 секунд.Манипулировать пользовательские значения с помощью jQuery

Я могу вычислить часть цикла, но я просто хотел посмотреть, есть ли способ манипулировать значением «u» с помощью jQuery.

+1

Вы можете разделить разметку для тега изображения и логику для изменения значения –

+1

Это может быть так просто, как '$ ('IMG [U ] '). attr (' u ',' ') ' –

+0

Несомненно, я добавил код выше. Что касается логики, мне действительно нужно изменить значение «u» в петле каждые 15 секунд. Поэтому в этом случае я могу изменить «u» с кнопки6 на кнопку7 или ** 8 каждые 15 секунд. – Brock

ответ

1

Попробуйте

setInterval(function(){ 
    var val = $('#button4').attr('u').substring(6); 
    $('#button4').attr('u', 'button' + (1 + +val)) 
}, 1000) 

Демо: Fiddle

2

Вы можете изменить атрибут u (кстати, если вы переключаетесь с u к data-u тогда это будет действительным атрибут, под HTML5):

$('img').attr('u', function(i,u) { 
    /* i is the index of the current image among all the images returned by the selector, 
     u is the current value of that attribute */ 
    return u.slice(0, -1) + (parseInt(u.replace(/\D/g,''), 10) + 1); 
}); 

JS Fiddle demo.

Хотя влияние нового значения на петлю или другие переменные неизвестно из-за ограниченной информации в самом вопросе.

Чтобы продемонстрировать, как использовать data-* атрибуты, которые позволяет пользовательские атрибуты в силе (под HTML5):

<img src="http://placekitten.com/400/500" class="className" click="" id='button4' data-u="button6" data-r="button5" data-l="ele1" data-d="" /> 

Со следующим JQuery:

$('img').attr('data-u', function (i, u) { 
    return u.replace(/\d+$/,'') + (parseInt(u.replace(/\D/g, ''), 10) + 1); 
}); 

JS Fiddle demo.

Что касается ответов, размещенных в другом вопросе (Using a function to update a value within the data() method of jQuery sets the variable equivalent to the anonymous function, not the return value), метод data() не принимает функцию в качестве обратного вызова, так как attr() делает, поэтому я использовал .attr('data-u', function(){/*...*/}), а не сам data() метод (хотя я попробовал, что во-первых, что не сработало).

Ссылки:

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