2011-05-19 38 views
2

我有以下的html:串連ID jQuery中

<div id="myDiv1_" class="formElement1"><asp:TextBox ID="TextBox1" CssClass="formInput1" runat="server"></asp:TextBox></div><br /> 
<div id="myDiv2_" class="formElement1"><asp:TextBox ID="TextBox2" CssClass="formInput1" runat="server"></asp:TextBox></div><br /> 
<div id="myDiv3_" class="formElement1"><asp:TextBox ID="TextBox3" CssClass="formInput1" runat="server"></asp:TextBox></div> 

和我有以下的jQuery代碼:

$('input[type="text"]').focus(function() { 
    $(this).addClass("formElement1"); 
}); 

$('input[type="text"]').blur(function() { 
    $(this).removeClass("formElement1"); 
}); 

我所試圖做的,當輸入框有被關注我想改變div的類。我正在嘗試更改$(this).addClass以使用類似$('#' + div_id + textbox_id').addClass的內容。

但是,對於jQuery有點新鮮,我不知道如何去完成這個。任何幫助表示讚賞。

謝謝

回答

2

要更改類的父DIV的,使用:

$('input[type="text"]').focus(function() { 
    $(this).closest('div').addClass("formElement1"); 
}); 

$('input[type="text"]').blur(function() { 
    $(this).closest('div').removeClass("formElement1"); 
}); 

最接近的方法將搜索匹配的第一個元素的dom(從此處開始)

2

您不需要選擇器。只需遍歷嵌套父元素。

$(this.parentNode).addClass('whatever'); 

如果你絕對希望做一個DOM的選擇,你可以抓住從ID的數量,並在嵌套ID使用它。

var num = this.id.slice(-1); 
$('#myDiv' + num + '_').addClass('whatever'); 

編輯:我有它顛倒在第一。我正在考慮處理程序是在<div>。固定。

0

$('#' + div_id +' > #'+ textbox_id').addClass("formElement1")應該工作

0

嘗試使用starts with選擇像這樣$('div[id^=myDiv] input').focus(function(){$(this).addClass('focus');});不要忘記removeClass('focus')blur()爲好。

0

獲取dom中的文本框的父級並將類應用於它(本例中爲div)。您需要更改您的代碼,如下所示:

$('input[type="text"]').focus(function() { 
    $(this).parent().addClass("your-class");; 
}); 

$('input[type="text"]').blur(function() { 
    $(this).parent().addClass("your-class");; 
}); 
0

從我收集的內容中可以看出,您的輸入是div(孩子)的內部。所以,你想要的東西是這樣的:

$('input[type="text"]').focus(function() { 
    $(this).closest("div").addClass("formElement1"); 
}); 

這將找到最接近的父div並添加適當的類。

另外,如果你正在使用AJAX來這裏做一些替代品,你可能要考慮使用live()

$('input[type="text"]').live("focus", function() { 
    $(this).closest("div").addClass("formElement1"); 
}); 
0

每個文本框的ID都是唯一的我假設您可以簡單地這樣做ð應無歧義爲要添加哪些元素類:

$('input[type="text"]').focus(function() { 
    $('#' + textbox_id).addClass("formElement1"); 
} 

,如果你只是想只有當正確的文本框獲得焦點更改類:

$('#' + textbox_id).focus(function() { 
    $('#' + textbox_id).addClass("formElement1"); 
}