2011-08-22 54 views
3

這篇文章與我的previous one有關。用MooTools完全刪除課程

我能夠感謝Pointy的回答,正確使用MoCools的RemoveClass,但不幸的是我仍然有一個問題:即使從HTML元素中刪除類,HTML元素仍然有一個空類(class =「」)。

我想知道是否有辦法避免這種情況,並完全刪除類。

我的代碼:

<script type="text/javascript"> 
    window.addEvent('domready', function(){ 
    $('votconj').addEvent('click', function() { 
     $('first_name_conjoint').addClass("validate['required','nodigit']"); 
     $('last_name_conjoint').addClass("validate['required','nodigit']"); 
     $('jj_conjoint').addClass("validate['required']"); 
     $('mm_conjoint').addClass("validate['required']"); 
     $('aaaa_conjoint').addClass("validate['required']"); 
     $('conjoint_regime').addClass("validate['required']"); 
     new FormCheck('formulaire'); 
    }); 

    $('votconj_no').addEvent('click', function() { 
     $('first_name_conjoint').removeClass("validate\\['required','nodigit'\\]"); 
     $('first_name_conjoint').removeProperty('class'); 
     $('last_name_conjoint').removeClass("validate\\['required','nodigit'\\]"); 
     $('last_name_conjoint').removeProperty('class'); 
     $('jj_conjoint').removeClass("validate\\['required'\\]"); 
     $('jj_conjoint').removeProperty('class'); 
     $('mm_conjoint').removeClass("validate\\['required'\\]"); 
     $('mm_conjoint').removeProperty('class'); 
     $('aaaa_conjoint').removeClass("validate\\['required'\\]"); 
     $('aaaa_conjoint').removeProperty('class'); 
     $('conjoint_regime').removeClass("validate\\['required'\\]"); 
     $('conjoint_regime').removeProperty('class'); 
     new FormCheck('formulaire'); 
    }); 

    new FormCheck('formulaire'); 
}); 
</script> 

單選按鈕代碼

<label>Conjoint :</label> 
    <input type="radio" name="votconj" id="votconj" value="oui" onclick="affich_conj();">oui 
    <input type="radio" name="votconj" id="votconj_no" value="non" checked="checked" onclick="affich_conj();">non 
+0

請問你爲什麼要這樣?擁有'class =「」'在任何方面都沒有害處。 – Luwe

+0

@Luwe問題是我的代碼調用另一個頁面來檢查表單,並且每次表單的元素都有一個屬性類時,表單無法提交。 – Bruno

+0

嗯奇怪...無論如何,我已經在下面添加了我的答案。 – Luwe

回答

5

由JavaScript本身提供的使用removeAttribute。這將完全從標籤刪除屬性:

<a href="" class="foo" id="link">Hay</a> 

<script> 
var link = $('link'); 
link.removeAttribute('class'); 
console.log(link); // <a id="link" href=""> 
</script> 

例如:http://jsfiddle.net/LDBUy/

+0

這很奇怪,'element.erase'和'element.removeProperty'和'element.property = null'和'delete'都失敗了。 –

+1

這些都是MooTools的方法,我認爲他們選擇保持'class =「」'使'addClass'和'removeClass'工作得更好和/或更快。不知道是否這是原因,但... – Luwe

2

您應該能夠使用.removeProperty()方法來刪除類屬性。

http://mootools.net/docs/core/Element/Element#Element:removeProperty

他們的榜樣:

HTML

<a id="myAnchor" href="#" onmousedown="alert('click');"></a> 

的JavaScript

//Eww... inline JavaScript is bad! Let's get rid of it. 
$('myAnchor').removeProperty('onmousedown'); 

生成的HTML

<a id="myAnchor" href="#"></a> 

只是交換「onmousedown事件」在自己的代碼爲「類」,你應該是金色的。

編輯:我更新了你的另一個問題的jsfiddle與此示例(從頭中刪除紅色),它工作正常。你可以發佈更多的代碼來查看問題是否在其他地方?

http://jsfiddle.net/FrT6V/1/

+0

你的答案應該可以工作,但是不知道原因。我要去調查這個! – Bruno

+0

奇怪的是,您的代碼中可能存在其他干擾的其他內容。我承認,我並不是MooTools的專家(最近一次使用它的時間大約是3年前),所以其他人可能會明白爲什麼它不能按預期工作。 – Scottie