2010-10-07 34 views
2

我有這個問題:我需要從提交輸入的兄弟姐妹輸入中刪除「禁用」attibute。下面是HTML:如何從輸入的兄弟姐妹中刪除屬性「禁用」,當我點擊一個提交輸入

<td> 
<input type="hidden" value="2000000000002_STATUTO_07_10_2010.gif" name="nomeDocumento" disabled="true"> 
<input type="hidden" value="811ecdd0-65e9-49d6-8d9d-8b7c9d9b6407" name="UUID" disabled="true"> 
<input type="submit" value="cancella" name="cancella"> 
</td> 

我需要使用jQuery刪除禁用屬性的簡單方法,當我在點擊提交。 我試過了:

$('input[name=cancella]').click(function(){ 
$('this').prev().removeAttr('disabled'); 
$('this').prev().prev().removeAttr('disabled'); 
} 

但我沒有工作。

有什麼建議嗎?

+0

的'disabled'屬性要麼沒有任何價值或disabled',即''的一個值<輸入名稱= 「foo」 的禁用>'或'<輸入名稱= 「foo」 的禁用= 「禁用」>'。此外,您可能會對屬性和屬性感到困惑:jQuery的'attr()'和'removeAttr()'方法實際上處理的是屬性,而不是屬性。 – 2010-10-07 09:20:43

+0

你試過'elementNode.disabled = false'嗎?我不明白爲什麼即使使用jQuery來完成簡單的事情。 – Mario 2012-10-16 15:40:38

+0

@ user1598585 27.000點stackoverflow後,我會說是的,但在當時我是一個初級:P – 2012-10-16 18:05:44

回答

5
$('input[name=cancella]').click(function(){ 
    $(this) 
     .closest('td') 
     .find('input[name!='+this.name+']') 
     .attr('disabled', false); 
}); 

法布里奇奧Calderan .prevAll()方式較好。 但是,.siblings()可能會更好,所以兄弟姐妹在哪裏都沒關係。

$('input[name=cancella]').click(function(){ 
    $(this).siblings('input').attr('disabled', false); 
}); 

使用.attr('disabled', false)應該工作以及和可能更可靠。

+0

感謝大家,主要錯誤是使用$('this')而不是$(this)。從現在開始我會記住這個事情! :) – 2010-10-07 09:21:30

+0

一個包裝來改變一個屬性的值?上帝,jQuery的哲學是令人難以置信的。 – Mario 2012-10-16 15:39:34

+0

@ user1598585用於更改集合中節點(複數)的屬性值的包裝器。請注意,DOM中的屬性和屬性之間存在顯着差異,所以我們也有。prop(propertyName [,value])= P – BGerrissen 2012-11-05 14:12:46

1

Ciao,

你試過.prevAll()嗎?

$('input[name=cancella]').click(function(){ 
    $(this).prevAll().removeAttr('disabled'); 
} 

http://api.jquery.com/prevAll/

注:這是一個對象,而不是一個字符串(你寫 '這個')

+0

+1,注意到'this'並使用.prevAll() – BGerrissen 2010-10-07 09:10:12

0

只需刪除解決此即

$('input[name=cancella]').click(function(){ 
    $(this).prev().removeAttr('disabled'); 
    $(this).prev().prev().removeAttr('disabled'); 
} 

這是你的對象不是屬性[名稱/ ID]值

0

可以使用.siblings()遍歷方法行情:

$('input[name=cancella]').siblings().removeAttr('disabled'); 

看看這個鏈接JQuery Sibling

+0

而且,和其他人一樣,你必須寫$(this)而不是$('this')。 – dmarucco 2010-10-07 09:07:43

0

嘗試此:

$('input[name=cancella]').click(function(){ 
    $(this).siblings().removeAttr('disabled'); 
}