2010-12-04 73 views
0

我正在使用jQuery用一個字符串替換元素的內容,其中包含一些元素。以下是我使用創造價值$的代碼,該字符串:爲什麼jQuery爲我的字符串添加反斜槓「」字符?

var value = '<span class="fn">' + $("#fn_").val() + '</span>'; 
$("input", this).val(value); 

然而,究竟是什麼被輸出具有退格字符的所有通過它,就像這樣:

<span class="\&quot;fn\&quot;">Name</span> 

我假設這可能是我的一個愚蠢的錯誤,但不知道我做錯了什麼?感謝任何建議!

編輯

爲了清楚起見,這裏是完整的代碼,我創建了jEditable自定義輸入類型,讓我聯編輯的vCard。

$.editable.addInputType('person', { 
element : function(settings, original) {  
    var fn = $('<input id="fn_"/>'); 
    var bday = $('<input id="bday_" />'); 
    var wday = $('<input id="wday_" />'); 
    var dday = $('<input id="dday_" />'); 
    var spouse = $('<input id="spouse_" />'); 

    $(this).append(fn); 
    $(this).append(bday); 
    $(this).append(wday); 
    $(this).append(dday); 
    $(this).append(spouse); 

    /* Hidden input to store value which is submitted to server. */ 
    var hidden = $('<input type="hidden">'); 
    $(this).append(hidden); 
    return(hidden); 
}, 

content : function(string, settings, original) { 
     var $data = $(string); 

     var data = {}; 
     $data.each(function() { 
      var $t = $(this); 
      data[$t.attr('class')] = { 
            class: $t.attr('class'), 
            value: $t.text()}; 
     }); 

     alert(data.length); 

     $("#fn_", this).val('Name'); 
     $("#bday_", this).val('Born'); 
     $("#wday_", this).val('Married'); 
     $("#dday_", this).val('Died'); 
     $("#spouse_", this).val('Spouse'); 
    }, 

    submit: function (settings, original) { 
    var value = "<span class=fn>" + $("#fn_").val() + '</span>' + '<span class=spouse>' + $("#spouse_").val() + '</span>' + '<span class=bday>' + $("#bday_").val() + '</span>' + '<span class=wday>' + $("#wday_").val() + '</span>' +'<span class=dday>' + $("#dday_").val() + '</span>'; 
     $("input", this).val(value); 
    } 

}); 
+0

你可以顯示輸出`value`的代碼嗎? – 2010-12-04 16:11:57

+0

你在哪裏輸出你的價值? – WaiLam 2010-12-04 16:13:33

+0

我使用jEditable,所以它是它的一個功能的一部分。已編輯上面的示例以顯示 – 2010-12-04 16:19:03

回答

0

嗯,我好像用

'<span class=fn>' 

代替

'<span class="fn">' 

即來自各地的類名稱去掉引號已經得到了這個工作。出於某種原因,報價被正確地放回到輸出中,但是我無法使用多個類。

0

如果你想設置的HTML這是一個跨度內,做一個正確的做法是:

.empty().append($('<span class="fn"/>').text($("#fn_").val())) 

或者,如果你想更換全部元素:

.replaceWith($('<span class="fn"/>').text($("#fn_").val())) 

或者如果您只想刪除類vcard,請添加類fn,並設置內容:

.removeClass('vcard').addClass('fn').text($("#fn_").val()) 

這可以確保文本框中的值在插入span元素之前已正確地進行HTML轉義。使用.val來設置元素的HTML內容是不正確的;對此使用.html,雖然在這種情況下它不是必需的。

0

您是否知道在將數據發送到服務器之前執行您的提交函數(看看Jeditable源代碼),這意味着您的所有「跨度」被髮送到服務器,所以可能編碼您的元素的是你的服務器端腳本。

乾杯。