2013-10-11 16 views
0

如果有人能看到什麼是這裏的罪魁禍首我將不勝感激。我已經嘗試使用本地JS而不是jQuery來實現點擊功能,但是,點擊功能無法以任何方式工作。我必須在這裏失去一些東西。麻煩腳本用來觸發點擊事件

HTML:

<ul class="adcats"> 
    <li>One</li> 
    <li>Two</li> 
    <li>Three</li> 
    </ul> 
    <div class="contactform fashion">Testing</div> 
    <div class="contactform othername">Other</div> 
    <div class="contactform othername2">Others</div> 

JS代碼:

var hideforms = jQuery('.contactform').hide(); 
    var buttons = jQuery('.adcats > li'); 
    var hideforms; 
    revForm = function() { 
    hideforms; 
}; 
    buttons[0].click = function() { 
     revForm; 
    document.getElementsByClassName("fashion").style.display = "block"; 
}; 

回答

2

使用原生的JavaScript,你需要使用onclick添加使用jQuery單擊處理

buttons[0].onclick = function() { 
} 

可以使用.click()

buttons.first().click(function(){ 
}) 

document.getElementsByClassName("fashion").style.display = "block";是錯誤的,因爲document.getElementsByClassName("fashion")返回一個數組,而不是一個單獨的DOM元素。因此,如果有與fashion類只有一個元素,那麼你需要使用document.getElementsByClassName("fashion")[0].style.display = "block";否則你需要通過數組進行迭代,並設置樣式

var arr = document.getElementsByClassName("fashion") 
    for (var i = 0; i < arr.length; i++) { 
     arr[i].style.display = "block"; 
    } 

一個可行的解決方案將是這樣

jQuery(function() { 
    var buttons = jQuery('.adcats > li'); 
    var forms = jQuery('.contactform').hide(); 

    buttons.click(function() { 
     forms.hide(); 
     forms.filter($(this).data('target')).show() 
    }) 
}) 

演示:Fiddle

+0

偉大的提示,指出了getClass返回數組,即使它的確是1個元素。但是,仍然沒有工作因爲某種原因... – Kald

+0

@Kald你需要分享你的HTML也包括喜歡時尚和聯繫形式的其他元素所指......也不要忘了添加腳本中的DOM準備處理 –

+0

剛剛修訂它。它只是共享一個普通類的3個div,但普通類與click事件無關。 – Kald

0

試試這個

$(".adcats > li").on('click',function() { 
    document.getElementsByClassName("fashion").style.display = "block"; 
}); 
1

你會得到什麼錯誤? 如果有什麼的,但形式沒有掩飾,原因一定是

revForm = function() { 
    hideforms; 
}; 

應該

revForm = function() { 
    hideforms(); 
}; 

而且不要忘了調用revForm功能,它應該是revForm();

+0

是的我懶惰的(),雖然代碼運行沒有他們。 – Kald

+0

()需要運行該函數。沒有(),變量只是公共變量(類型函數)。例如: : $(「a」)。click(hideForms); 這是正常的,因爲你不想運行hideForms函數,只是將它傳遞給另一個函數。 –

+0

哦,是的,肯定需要通過一個事件的參數或函數,但不是單獨運行變量......但是,適當的santax是與()不管。謝謝。 – Kald