2016-09-27 3 views
0

다른 페이지의 테이블을 res이라는 변수로 가져올 수있었습니다.jquery를 사용하여 .filter를 통해 변수를 전달하는 방법

search에 대한 필터를 통해이 변수를 전달해야합니다.

.parents()을 사용하는 테이블 행이 나타납니다.

이 필터는 테이블이 jQuery와 동일한 페이지에있을 때 작동하지만 $.get()을 사용할 때 작동하지 않습니다.

$.get('oncalltable.html', function(res) { 

    var d = new Date(); 

    var month = d.getMonth()+1; 
    var day = d.getDate(); 
    var year = d.getFullYear(); 

    var oncalldate = ((''+month).length<2 ? '0' : '') + month + '/' + 
     ((''+day).length<2 ? '0' : '') + day + '/' + year % 100; 

    var search = oncalldate; 

    var todayoncall = $("span").filter(function() { 
     return $(this).text() == search; 
    }).parents('tr'); 

    console.log(oncalldate, res, todayoncall); 

    $('.test span').append(todayoncall); 

}); 
+0

그리고 작동하지 않는 것은 네트워크 요청이 실제로 처리되는지 확인 했습니까? – adeneo

+1

'this'는 외부 함수와 비교하여'.filter()'함수의 맥락에서 다릅니다. '$ .get '에서'this'를 기대하고 있습니까? –

+0

'search' 변수와 같은 텍스트를 가진'document' 내에 기존 요소가 있습니까? 질문에'span' 엘리먼트의'search'와'html' 텍스트 값을 포함 할 수 있습니까? 모든 범위 요소를 필터링하는 목적은 무엇입니까, 기존의 span 요소를'.test span'에 추가합니까? 요소? – guest271314

답변

1

JQuery와 선택기는 DOM에 반대 :

다음은 내 접근 방식입니다. oncalltable.html은 DOM에 없으며 HTML과 비슷한 형태의 변수 안에있는 텍스트 일뿐입니다.

$ ("span") 선택기가 oncalltable.html의 내용을 보길 기대한다고 생각합니다. 당신이 찾고있는 <span> (oncalltable.html 내부)이 DOM에 없기 때문에 그렇게하지 않을 것입니다.

oncalltable.html에있는 데이터가 지금은 항상 신뢰할 수 있다고 확신 할 수있는 경우에만 HTML을 페이지에로드하여 DOM에 추가 할 수 있습니다.

기존의 일부 페이지 요소의 .innerHTML에 'res'의 내용을 할당하는 한 가지 방법이 있습니다. 당신이 한 경우 구문 분석하는 동안에 은 데이터를 보유 숨겨진 사업부를 (또는하기로 결정) :

<div id="whereResGoes" style="display:none"></div>

를 다음 $ 갔지 (에 전달하는 기능에 당신이 $를 사용하는 부분 위 ('기간') 선택) 지금

$('whereResGoes').html(res);

을 실행 그것은 당신의 DOM과 $에 장전 ('기간') 선택기를 볼 수 있습니다.

이 접근 방식은 oncalltable.html을 페이지의 일부로 만들기 때문에 oncalltable.html의 작성자가 페이지에서 원하는 것을 쓸 수 있도록하는 것과 같습니다. 해당 페이지가 유출 된 경우에도 귀하의 정보가 누출됩니다.

+0

감사합니다! 이것은 jquery가 무엇인지 잘 이해할 수있게 해주는 주석입니다. – nastri83

관련 문제