2011-01-25 2 views
2

я есть «UID» атрибут и его значение в моем теге «тело» ...JQuery GetAttribute

$(document).ready(regFunct()); 

function regFunct(){ 
    alert($("body").attr("uid")); 
} 

, но он говорит, «не определено». что-то не так?

+0

@bolt: да, я знаю, что у меня есть другой атрибут «id» в теге body ... мне нужна другая переменная, которая будет сохранена на теге body – theHack

+1

Я бы не добавил новый атрибут к телу элемент. Взгляните на jQuery.data() - http://api.jquery.com/jQuery.data/ – raRaRa

ответ

5

попробовать:

$(document).ready(function(){ 
    regFunct(); 
}); 

function regFunct(){ 
    alert($("body").attr("uid")); 
} 
+0

Или даже '$ (document) .ready (regFunct);' – BoltClock

+1

Или даже $ (function() {regFunct ();}); – TheVillageIdiot

+0

@TheVillageIdiot: он тоже возвращает неопределенный ... он возвращает окно предупреждения и говорит «undefined»; – theHack

2

Вы помещаете возвращаемого значения из regFunct в метод .ready() обработчика. То есть, undefined, потому что ваша функция ничего не возвращает.

Вам необходимо пройти в ссылке функции, опуская скобки:

$(document).ready(regFunct); 
+0

он тоже не работает ... – theHack

+0

@AfrigAminuddin: единственное объяснение тогда в том, что тэг '' не имеет свойства "uid »: Рабочий пример: http://www.jsfiddle.net/PkngP/ – jAndy

+0

Это не определено в Internet Explorer, потому что атрибут uid не является допустимым атрибутом для тега body. Посмотрите на мой ответ для решения. – raRaRa

1

Привет добавления пользовательского атрибута является плохое поведение. посмотрите на http://www.w3schools.com/tags/tag_body.asp, вы не будете атрибутом uid.

Если вы хотите сохранить свои данные. использовать $.data (см документацию jQuery site)

// save the value 
$('body').data('uid', mycustomvalue); 
// retrieve the value 
$('body').data('uid'); 

Если данные поступают от сервера, вы все еще можете сделать

<script type="text/javascript"> 
    $(function() { 
     $('body').data('uid', '<?php echo $_GET[uid] ?>'); 
    }); 
</script> 
+0

проблема в том, что .. . Я храню данные со стороны сервера ... – theHack

1
$(document).ready(regFunct); 

набор для REL тегов и проверить!

function regFunct(){ 
    alert($("body").attr("rel")); 
} 
+0

http://jsfiddle.net/xysjt/ example – Harish

1

UPDATE: Это, кажется, не определено в Internet Explorer, так как UID не является известным атрибутом. Исправление было бы использовать jQuery.data() для вставки данных в элемент.

$(document).ready(regFunct()); 

function regFunct(){ 
    $('body').data('uid', 1337); 
    alert($('body').data('uid')); 
} 

Но вам придется назначать uid самостоятельно. Например, вы можете сделать это через <script> на странице.

<script type="text/javascript"> 
    $(document).ready(setData()); 

    function setData(){ 
     $('body').data('uid', 1337); 
    } 
</script> 

Подробнее о jQuery.data() на http://api.jquery.com/jQuery.data/

Пример работы: http://jsfiddle.net/6Bwtt/1/

НО если вы пытаетесь сохранить данные на странице с серверной стороны, вы могли бы просто иметь некоторые невидимый элемент после тела, например <div id="uid" style="display:none;">Your ID here</div>, затем извлеките его, используя $("#uid").html(); Voila! :)

+0

@ Baptiste Pernet - Конечно, вы можете использовать javascript для хранения всех данных, которые вам нужны, но иногда людям нравится простое решение, которое работает без особых проблем. Некоторым людям, похоже, нелегко найти способ, как это сделать: $ ('body'). Data ('uid', yourServerSideID). – raRaRa