2016-06-22 4 views
2

D3을 사용하여 일부 텍스트 객체가 분산되어있는지도를 만듭니다. 각 텍스트 객체에는 ID 속성이 추가되고 값에 대한 일부 단어가 있습니다. 여기에 내가 만드는 오전 이해하는 몇 가지 예제 코드입니다 : 내가 직접 내 브라우저 (파이어 폭스 45)에서 "소"텍스트 boject을 클릭하면Jquery는 클릭을 호출 할 수 없지만 마우스로 수동으로 수행 할 수 있습니다.

g.selectAll("text") 
    .data(data).enter() 
    .append("text") 
    .attr("id", function(d,i){return "cows_name";}) 
    .text(function(d) { return "cows"; }) 
    .on("click", function(d) { 
     alert("### we are in here" with $(this).attr("id")); 
    }) 

이 경고 이벤트가 호출 될 때, 그리고 그 결론을 내릴 수 있어요 id 속성은 "cows_name"을 다시 리턴합니다. 그러나

, 내가 셀레늄 또는 스크래치 패드 중이 jQuery 코드를 호출 할 :

var toClick = $("#cows_name") 
toClick.click(); 

아무것도 전혀 발생하지 않습니다. 내가 위의 스크립트를 사용하여 생성 된 D3 객체를 "클릭"하는 올바른 방법은 무엇입니까?

var toClick = $("#cow_name")[0]; 

이 실제 DOM 요소를 선택 :

+0

당신은'selectAll ("text")'을 실행합니다. 요소 위에'cows_name'을 가진 요소가 더 많으므로 모호한가요? – Paul

+4

click()은 SVG 요소가 아닌 HTML 요소에 존재하는 메서드입니다. –

+0

경보 장소에 $ (this)를 기록하여 cow_name 요소를 반환하는지 확인할 수 있습니까 –

답변

2

먼저 사용할 수의 당신의 toClick에 변경할 수 있습니다.

function fakeClick(target) { 
    var event = new Event('click'); 
    target.dispatchEvent(event); 
}; 

그리고, 당신이 그것을 전화 : https://jsfiddle.net/ap1m1L0q/4/

: 여기
fakeClick(toClick); 

는 SVG 요소를 사용하여, 바이올린입니다 귀하의 toClick을 변경 한 후, 나는 이벤트를 클릭 "시뮬레이션"이 멋진 기능을 발견
1

당신은 jQuery를 .trigger()

var toClick = $("#cows_name"); 
toClick.trigger("click"); 
+0

.trigger는 아무 것도 클릭하지 않는 것으로 보입니다. 나는 그것을 수동으로 클릭 할 때 console.log() 요소를 사용하지만 그 안에 트리거 메서드가 있습니다. – angryip

+0

해당 개체의 선택기가 비어있는 것처럼 업데이트 된 주석을 질문에서 확인하십시오. 문제가 있는지 여부는 확실하지 않습니다. – angryip

관련 문제