2013-12-02 2 views
0

мне нужно написать в DIV некоторые пользовательские данные атрибуты, как эти:Update данных- атрибут окна размер

data-100="50" 

, где «100» высота другого DIV и «50» является «высота/2 ». Я сделал это с JQuery, и она работает:

function customFn() { 
var customFn = $('.page-title').height();  
$('#header).attr('data-' + customFn, 'customFn/2');   
} 

customFn(); 

Теперь я хочу, чтобы обновить, что значения на изменение размера окна, поэтому я добавил:

$(window).resize(customFn); 

Но я предполагаю, что это не решение, так как при изменении размера окна функция добавляет новые атрибуты данных внутри div с новыми значениями вместо обновления существующих.

Есть ли альтернативное решение для этого?

+0

Нельзя хранить информацию о части имени атрибута. Почему бы просто не использовать атрибут, например data-height = «100». И вы можете определенно сделать деление (/ 2) в коде, вам не нужно добавлять это к атрибуту. – Esko

+1

К сожалению, мне нужно сохранить информацию о части имени атрибута, потому что я пытаюсь сделать работу [skrollr plugin] (https://github.com/Prinzhorn/skrollr) за то, что у вас больше контроля над поведением параллакса. :( – user1861373

ответ

0

Не используйте attr() для обновления данных, а использовать data()

function customFn() { 
    var customFn = $('.page-title').height();  
    $('#header').data(customFn, customFn/2);  
} 
0

Как я понимаю, вы пытаетесь сохранить два значения: высоту и высоту/2. Вы не должны хранить первый в имени атрибута данных ... а хранить как в отдельном атрибуте так:

function customFn() { 
    var height = $('.page-title').height();  
    $('#header').data('height', height);   
    $('#header').data('half-height', height/2);  
} 

Даже лучше, так как одна величина зависит от другого (value1 = значение/2), вам действительно нужно только сохранить первый, и при необходимости может вычислить второе.

0

Вы можете попробовать это?

$(window).resize(function() { 
    customFn(); 
}); 
Смежные вопросы