2015-06-13 86 views
-1

更換一個DOM元素我需要更換以下html元素jQuery的 - 負載

<input type="submit" id="send_product_enquiry" value="Send Enquiry" class="button"> 

與此

<input type="submit" id="send_product_enquiry" onclick="ga('send', 'event', { eventCategory: 'Contact From Enquiry', eventAction: 'Form Entry', eventLabel: 'Contact Form Enquiry'});" value="Send Enquiry" class="button"> 

我一直在嘗試使用

jQuery(document).ready(function($) { 
$('#send_product_enquiry').replaceWith('<input type="submit" id="send_product_enquiry" onclick="ga('send', 'event', { eventCategory: 'Contact From Enquiry', eventAction: 'Form Entry', eventLabel: 'Contact Form Enquiry'});" value="Send Enquiry" class="button"> '); 
}); 

但我不斷收到以下錯誤

「失蹤)的說法......」

我知道這是一個語法的事情與雙或單引號,但我只是不知道什麼是正確的。一直在搞亂沒有結果。

+1

在代碼片段中,單引號內部沒有被轉義的單引號,因此會產生問題。如果您在同一引號內使用引號,則需要使用\轉義它們。 – GillesC

+0

@gillesc你能舉個例子嗎?不知道你的意思是「通過''逃生」 –

回答

1

使用jQuery添加點擊處理程序。

$('#send_product_enquiry').on('click', function() { 
    ga('send', 'event', { 
     eventCategory: 'Contact From Enquiry', 
     eventAction: 'Form Entry', 
     eventLabel: 'Contact Form Enquiry' 
    }); 
}); 
+0

除了引用我錯了,我認爲這是一個改進的解決方案,我有什麼。 –

+0

@ T.J.Crowder嗯,我檢查了什麼建議,它似乎工作。我可以和.on('click','blablabla')一起工作。這有什麼缺點? (附加onclick) –

+0

@NikolaL .:'onXyz'屬性創建的事件處理程序與其他事件處理程序無法很好地協作,並且意味着您必須將代碼放入字符串中(這樣可以很容易地弄亂引號,如你的問題)。代碼應該是* code *,而不是代碼中的字符串。 –

1

你必須逃脫你所有的single quotes。看到正在逃脫所有的單引號「\」

$('#send_product_enquiry').replaceWith('<input type="submit" id="send_product_enquiry" onclick="ga(\'send\', \'event\', { eventCategory: \'Contact From Enquiry\', eventAction: \'Form Entry\', eventLabel: \'Contact Form Enquiry\'});" value="Send Enquiry" class="button"> '); 

爲什麼你需要ESCAPE:

在解釋你的代碼,你是混淆瞭解您的字符串結尾的解釋。轉義字符串意味着減少歧義。通過前面的斜槓,你宣佈它是一個值的一部分。

+0

感謝您的幫助。 –

+0

永遠是一種享受:) – Abhinav

1

的問題是,你傳遞replaceWith字符串結束遲早比你想象的那樣:

jQuery(document).ready(function($) { 
$('#send_product_enquiry').replaceWith('<input type="submit" id="send_product_enquiry" onclick="ga('send', 'event', { eventCategory: 'Contact From Enquiry', eventAction: 'Form Entry', eventLabel: 'Contact Form Enquiry'});" value="Send Enquiry" class="button"> '); 
// Here -------------------------------------------------------------------------------------------^ 
}); 

什麼像樣的程序編輯器應該已經是明顯的語法高亮。

要把一個'放入與'引用的字符串中,您需要使用\'


但更好的是,因爲你使用jQuery,動態掛鉤的處理程序:

jQuery(document).ready(function($) { 
    var btn = $('<input type="submit" id="send_product_enquiry" value="Send Enquiry" class="button">'); 
    $('#send_product_enquiry').replaceWith(btn); 
    btn.on("click", function() { 
    ga('send', 'event', { 
     eventCategory: 'Contact From Enquiry', 
     eventAction: 'Form Entry', 
     eventLabel: 'Contact Form Enquiry' 
    }); 
    }); 
}); 

那是,如果你真的需要更換的元素,而不僅僅是增加一個處理程序它或修改它一點。如果您只需添加處理程序,則:

jQuery(document).ready(function($) { 
    $('#send_product_enquiry').on("click", function() { 
    ga('send', 'event', { 
     eventCategory: 'Contact From Enquiry', 
     eventAction: 'Form Entry', 
     eventLabel: 'Contact Form Enquiry' 
    }); 
    }); 
}); 
+0

猜猜我不是那麼體面:)然後。感謝幫助。 –

+0

@NikolaL .:用「編輯器」來表示你用來編輯代碼的程序,而不是你。 –

+0

啊,哈哈,這兩個都是最有可能的。有趣的是,單詞如何在你身上玩技巧。無論如何,感謝您的幫助。每天你都會學到新的東西。 –