2015-06-13 94 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

啊,哈哈,这两个都是最有可能的。有趣的是,单词如何在你身上玩技巧。无论如何,感谢您的帮助。每天你都会学到新的东西。 –