2016-09-21 62 views
1

我試圖用html字符串附加html,但是在單引號中有一些麻煩。用javascript字符串附加html

追加要素作品這麼遠:

$("<a class='action-button' id='pl65197buy' value='buy now'>Bekijk aanbieding</a>").prependTo("div#centerplist"); 

但是當我嘗試添加一個onclick功能,它不會工作 - 我需要以某種方式逃避引號?

onclick="buy(this, 65197, null, 'pl65197qty",null, '/ajax/buy' 

這顯然是錯誤的,但它最接近的沒有一個錯誤,我得到的控制檯:

$("<a class='action-button' id='pl65197buy' value='buy now' onclick='buy(this, 65197, null, 'pl65197qty',null, '/ajax/buy'>Bekijk aanbieding</a>").prependTo("div#centerplist"); 
+0

爲什麼的onclick,而不是在你的JavaScript代碼的事件處理程序? –

回答

1

您需要使用\字符逃避你的報價。試試這個

$("<a class='action-button' id='pl65197buy' value='buy now' onclick=\"buy(this, 65197, null, 'pl65197qty',null, '/ajax/buy')\">Bekijk aanbieding</a>").prependTo("div#centerplist"); 
+0

真的嗎?只是要刪除「是」? –

0
$("<a class='action-button' id='pl65197buy' value='buy now' onclick=\"buy(this, 65197, null, 'pl65197qty',null, '/ajax/buy')\">Bekijk aanbieding</a>").prependTo("div#centerplist"); 

試試這個

1

我建議使用在JavaScript的事件處理方式略有不同。這樣它的兩個更容易閱讀和維護。

$("<a class='action-button' data-id='165197' id='pl65197buy' value='buy now' >Bekijk aanbieding</a>").prependTo("div#centerplist"); 

$(document).on("click",".action-button",function() { 
    // your buy() function 
    // $(this) contains your pressed button information 
    buy($(this)[0], $(this).data('id'), null, 'p' + $(this).data('id') + 'qty', null, '/ajax/buy') 
}); 

你能與$(this).data('id')訪問data-id屬性,例如。

編輯:我已經包括了你的購買功能,我不是如果p + id + qty是通用或不是,雖然我認爲你得到它如何工作在一般情況下。

+0

嗯,這很有趣。不確定如何編寫該功能,雖然 – Xeptor

+0

編輯我的答案。現在更清楚我如何在事件處理程序中編寫函數? –

0

試試這個。

<html> 
 
<head> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> 
 
<body> 
 
<div id="centerplist"> 
 
</div> 
 
<script> 
 
$(document).ready(function() 
 
{ 
 
$("#centerplist").prepend("<a class='action-button' id='pl65197buy' value='buy now' onclick='buy(this, 65197, null,\"pl65197qty\",null, \"/ajax/buy\")'>Bekijk aanbieding</a>"); 
 
}); 
 

 
function buy(p1,p2,p3,p4,p5,p6) 
 
{ 
 
alert(p2); 
 
} 
 
</script> 
 
</body> 
 
</html>