2010-12-04 3 views
0

jQuery를 사용하여 요소의 내용을 일부 요소가 들어있는 문자열로 바꿉니다. 다음 나는 $의 가치를 창출하기 위해 사용하고 코드가 문자열 : 난jQuery가 백 슬래시 ""문자를 내 문자열에 추가하는 이유는 무엇입니까?

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

그러나

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

, 실제로 출력됩니다 어떤 일이 모두 그것을 통해 백 스페이스 문자,이 같은있다 이것이 아마 내 부분에 어리석은 실수라고 가정하고, 내가 뭘 잘못하고 있는지 확실하지 않습니까? 어떤 조언을 감사드립니다!

편집

는 명확하게하기 위해, 여기에 내가 나 vCard를 편집 인라인 할 수 있습니다 jEditable에 대한 사용자 정의 입력 유형을 만드는거야, 전체 코드입니다.

$.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'를 출력하는 코드를 표시 할 수 있습니까? –

+0

어떻게/값을 출력합니까? – WaiLam

+0

jEditable을 사용 중이므로이 함수 중 하나의 일부입니다. –

답변

0

은 흠 내가 클래스 이름 각국에서 따옴표를 제거하는 대신

'<span class="fn">' 

즉의

'<span class=fn>' 

를 사용하여이 작업을 가지고 보인다. 어떤 이유로 출력 결과에 따옴표를 올바르게 넣었지만 여러 클래스를 사용할 수 없습니다. 당신이 범위 안에 HTML을 설정하려는 경우

+0

으로 설정하고 있습니다. HTML 문자열을 작성하는 동안 다른 것을 wroing하는 중입니다. 우리는 큰 따옴표를 사용하기로되어 있습니다 ... – kobe

+0

그래서 두 번째 예제 첫 번째보다는 작동하는 사람이어야합니다. –

+0

@yes 우리는 항상 두 번째 예제처럼해야합니다. 어떤 이유로 든 여기에서 일한다면 코드가 깨질 수 있습니다. – kobe

0

, 그것을 할 수있는 하나의 올바른 방법은 다음과 같습니다

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

:

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

또는 당신은 완전히 요소를 교체하려는 경우 그냥 클래스 vcard을 제거 할 경우 또는 클래스 fn을 추가하고 내용을 설정합니다

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

이것은 텍스트 상자의 값이 span 요소에 삽입되기 전에 HTML 이스케이프 처리되도록합니다. .val을 사용하여 요소의 HTML 콘텐츠를 설정하는 것은 올바르지 않습니다. 이 경우에는 필요하지 않지만 .html을 사용하십시오.

+0

나는 그가 무언가'을 보여줄 수있는 입력을 만들고 그것을 span으로 바꾸지 않기를 원한다고 생각한다. – Lukman

+0

첫 번째 코드 예제에서 선호하는 방법 인'$ ("") .class ("fn"). text ($ ("# fn _"). val())' – Agos

0

제출 기능이 서버에 데이터를 보내기 전에 실행된다는 것을 알고 계셨습니까? (Jeditable 소스를 살펴보십시오), 이는 모든 "기간"이 서버로 전송된다는 것을 의미합니다. 따라서 요소를 인코딩 한 것은 무엇입니까? 서버 측 스크립트.

건배.

관련 문제