2013-12-09 2 views
0

Я новичок в JQuery. У меня есть следующие HTML визуализация:Синтаксис JQuery для проверки элементов HTML

<span class="activate"><label id="lblMTPrinterID1">MT1</label></span> 
<span class="activate"><label id="lblNTPrinterID1">NT1</label></span> 
<span class="activate"><label id="lblActive1">Y</label></span> 

Я пытаюсь проверить значения, даваемые 3 этикеток:

$(function(){ 
var tr = $(this).parents('tr:first'); 
var MTPrinterID = tr.find("#lblMTPrinterID1").val(); 
var NTPrinterID = tr.find("#lblNTPrinterID1").val(); 
var Active = tr.find("#lblActive1").val(); 

}); 

Этих вары все возвращаются нуль, даже те, которые я могу видеть их красиво в тонированном HTML , Я уверен, что использую неправильную систокс из-за незнания. Может кто-нибудь, пожалуйста, помогите :)

+0

'label' не имеет' .val() '. Вы можете восстановить только его .text() 'или' .html() '. – melancia

+1

в обработчике dom 'this' относится к объекту документа, поэтому' $ (this) .parents ('tr: first') 'ничего не вернет –

+0

Как сказал @MelanciaUK. .val() обычно возвращает значение атрибута value. .text() возвращает текст между открытыми и закрывающимися тегами. .html() возвращает html точно так, как вы его видите. – echochamber

ответ

1

Как насчет:

var label = $("#lblMTPrinterID1").text(); 

Это дает вам текст внутри тега ярлыка, как я думаю, что это то, что вы после этого!

+0

Большое спасибо. – user3041439

2

Попробуйте это:

$(function(){ 
    var MTPrinterID = $("#lblMTPrinterID1").html(); 
    var NTPrinterID = $("#lblNTPrinterID1").html(); 
    var Active = $("#lblActive1").html(); 
}); 

идентификаторы должны быть уникальными для всей страницы, поэтому нет никаких причин, чтобы фильтровать их, чтобы быть только внутри tr (которые, предположительно, у вас есть в вашем HTML, но просто не отображается в введенном вами коде). Если они не уникальны для всей страницы, используйте вместо нее классы.

Это также предполагает, что вы делаете что-то с этими var s после назначения их в рамках одной и той же функции, поскольку они не будут доступны вне функции, если они определены внутри функции.

+0

Спасибо. Работаю как шарм. – user3041439

+0

Добро пожаловать! Не стесняйтесь принять ответ, если он вам поможет. :) – mayabelle

+0

Я принял то, что есть в моем коде. Есть что-то еще, что мне нужно сделать? – user3041439

1

Посмотрите на этот код:

$(function(){ 
    /* some code here */ 
}); 

Что это делать? Он назначает функцию, которая запускается, когда DOM готов. Вот что делает $(function(){}).

Внутри вашего обработчика вы используете this. Ключевое слово на самом деле укажет на document. Затем вы ищете parentsdocument. Очевидно, это не принесет ничего полезного.

Я думаю, что вы, вероятно, хотите сделать что-то вроде этого:

$(function(){ 
    $('td').click(function() { 
     var tr = $(this).parents('tr:first'); 
     var MTPrinterID = tr.find("#lblMTPrinterID1").text(); 
     var NTPrinterID = tr.find("#lblNTPrinterID1").text(); 
     var Active = tr.find("#lblActive1").text(); 
    }); 
}); 

Это назначает click обработчик, поэтому, когда td элемент нажат, функция будет работать. this теперь укажет на элемент td, поэтому он найдет родителя tr и выполнит поиск оттуда.

Заметим также, что вам нужно позвонить text() не val(), поскольку label элементы не имеют value.

+0

Большое спасибо. – user3041439

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