2013-02-26 80 views
0

我有此功能Jquery的功能單引號忽略

function getTextfieldonly(fieldName, id) { 
     var option = jQuery('#'+fieldName+'_textfield').val(); 
     if (option != "") { 
     $('.'+fieldName+'_ul').append('<li class="'+fieldName+'_item">'+option+'<span onclick="removeSelected($(this),'+fieldName+')" class="reLef buttonleistungspktr '+fieldName+'_button2"></span></li>'); 
     $('#'+fieldName+'_list').prepend('<option selected="selected" value="'+option+'">'+option+'</option>'); 
     }else {return false} 
    }; 

在第4行i'm附加與跨度的立內部

.append('<li class="'+fieldName+'_item">'+option+'<span onclick="removeSelected($(this),'+fieldName+')" class="reLef buttonleistungspktr '+fieldName+'_button2"></span></li>'); 

如果fieldName參數是例如「foo」的

我想附加跨度內的onclick看起來像

onclick="removeSelected($(this),'foo')" 

但it's呈現像

onclick="removeSelected($(this),foo)" 

那麼,做了singlequotes去了? 我需要他們在那裏,我不知道如何。

任何人都有想法?在此先感謝

+1

更好的替代方法是使用jQuery處理程序綁定,而不是使用內聯事件處理程序。 *單引號去哪兒*:從來沒有單引號。在'[...],'+ fieldName +')「[...]'中,單引號表示您預先添加的字符串文本並附加到'fieldName'。 – 2013-02-26 11:36:45

+1

您應該避免編寫內聯javascript。問題非常糟糕,開始添加技術來強制瀏覽器拒絕它http://www.w3.org/TR/CSP/ – fmsf 2013-02-26 11:38:48

+0

感謝您的建議,解決此問題的另一種方法是更新div帶有ajax和控制器代碼位的內容,並且在div中有一個就緒函數(click(function(){eventhandlinghere}) – 2013-02-26 11:54:33

回答

1

更改此

<span onclick="removeSelected($(this),'+fieldName+')" 

<span onclick="removeSelected($(this),\''+fieldName+'\')" 

你需要逃脫單引號

+0

yeaah快速而正確:D – 2013-02-26 11:35:40