我在C#中创建了一个这样的html输入文本元素:
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
}
});
当我退出" boxIndex1foapalrow2"时,我逐步完成它,并将元素分配给$ currentindexcell。似乎是我所期待的:
<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 :(得分:5)
包含相同元素集的两个jQuery对象不相等。要测试jQuery对象是否与选择器匹配,请使用.is()
:
setTimeout (function() {
$('#divResult').load(document.URL + ' #divResult');
}, 1000);
如果你真的想检查是否相等,你应该比较实际的元素(而不是持有它们的jQuery对象):
if ($currentindexcell.is('[id$=boxIndex1foapalrow2]')) {