2011-07-04 39 views
1

我有這條JavaScript/jQuery,我試圖用它來附加一個元素到DOM然後附加一個eventlistener一起使用jQuery和標準JavaScript

$('.faq_answer').prev().append(finalRender.cloneNode(true)).addEventListener("click", function() {toggle(this)}, false); 

我知道附加部件完美地工作,但增加一個事件監聽器是給我的悲傷。

是否有可能/建議像這樣一起使用jQuery和普通JavaScript? 或者jQuery中有哪些工作會更好。 (jQuery非常新,所以忍受着我)。

+0

jQuery和Javascript不兼容。 jQuery不能接受它...(我只是在開玩笑) – jAndy

+0

如果你正在創建動態元素,請使用http://api.jquery.com/delegate/應用事件監聽器 – John

+0

現在,@ jAndy。 – Pointy

回答

0

你可以做這樣的事情:

$('.faq_answer').prev().append(finalRender.cloneNode(true)).click(function() {toggle(this)}); 

這是純粹的jQuery

0

我想你想你的事件監聽器添加到克隆節點 - 不是的.faq_answerprev()

如果您要導入jQuery,爲什麼不使用.click()方法而不是混合?這很簡單! :)

$('.faq_answer').prev().append(finalRender.cloneNode(true).click(function(){ 
    toggle(this) 
})); 
+2

您正試圖針對DOM元素調用jQuery方法。這是行不通的。 – user113716

+0

如果你把它換成jquery善良的東西,比如'$(finalRender.cloneNode(true)),點擊(... etc'? – simonlchilds

2

如果要使用本機方法,那麼你需要給他們打電話針對DOM元素,而不是jQuery的對象

var clone = finalRender.cloneNode(true); 
clone.addEventListener("click", function() {toggle(this)}, false); 

$('.faq_answer') 
     .prev() 
     .append(clone); 

如果你想使用jQuery,那麼你需要用jQuery對象中的DOM元素。

// Drop your DOM element----v----into a jQuery object 
var clone = $(finalRender.cloneNode(true)).bind("click", function(){ 
    toggle(this); 
}); 

$('.faq_answer') 
     .prev() 
     .append(clone); 
0

是的,它可以使用他們 「在一起」 因爲jQuery 的JavaScript。然而,在這種情況下,如果您正在使用庫,那麼確實沒有理由直接綁定事件處理程序。它已經知道如何管理事件處理程序,並且在其控制之外執行它可能不是一個好主意,除非你知道你在做什麼。

0

我發現這樣的問題很奇怪,因爲jQuery是JavaScript。

基於這種混合的代碼,只是簡單的JavaScript與jQuery代碼是好的。

但是,如果有一種更簡單的方式來做你想要的jQuery,那麼我會說只使用jQuery。

相關問題