2015-08-10 1 views
0

У меня есть текстовый элемент HTML ввода, созданный, как это в C#:Почему мой элемент не рассматривается как приравнивающий к себе?

boxIndex1 = new TextBox() 
{ 
    CssClass = "dplatypus-webform-field-input indexcell", 
    Width = TEXTBOX_WIDTH, 
    ID = "boxIndex1foapalrow2" 
}; 

... и это JQuery, чтобы ответить на размытый случае «boxIndex1foapalrow2» и его кузены («boxIndex2foapalrow3», «boxIndex3foapalrow4 »и т.д.):

$(document).on("blur", '.indexcell', function (e) { 
    var $currentindexcell = $(this); 
    if ($currentindexcell == $('[id$=boxIndex1foapalrow2]')) { 
     alert('index cell 1 exited'); // testing 
    } 
}); 

Я прошел через него, и элемент присваивается $ currentindexcell, когда я вкладка из„boxIndex1foapalrow2“, кажется, что я ожидал:

<input name="ctl00$ctl24$g_5f3fedca_19f7_4bc3_b84e_efbef0c48a33$ctl00$boxIndex1foapalrow2" type="text" id="ctl00_ctl24_g_5f3fedca_19f7_4bc3_b84e_efbef0c48a33_ctl00_boxIndex1foapalrow2" class="dplatypus-webform-field-input indexcell" style="width:88px;"> 

... но предупреждение не отображается/условие if равно false. Зачем? Мне кажется, что значение $currentindexcell в этом случае равно $('[id$=boxIndex1foapalrow2]'), но почему это не похоже на механизм выполнения Javascript?

+0

http://stackoverflow.com/questions/201183/how-to-determine-equality-for-two-javascript-objects –

+2

В то время как [Как определить равенство для двух объектов JavaScript?] (Http://stackoverflow.com/ questions/201183/how-to-define-equal-for-two-javascript-objects) полезен для понимания проблемы уровня равенства на уровне языка, специфического для jQuery решения he re, конечно, использовать '.is()', который не рассматривается в этом вопросе не-jQuery. – apsillers

ответ

4

Два объекта jQuery, которые содержат один и тот же набор элементов, не равны. Для того, чтобы проверить, соответствует ли ваш объект JQuery селектор, используйте .is():

if ($currentindexcell.is('[id$=boxIndex1foapalrow2]')) { 

Если вы действительно хотите, чтобы проверить равенство, следует сравнить фактические элементы (не объекты JQuery, которые держат их):

if (this == $('[id$=boxIndex1foapalrow2]')[0]) { 
Смежные вопросы