2012-07-02 3 views

답변

3

contextmenu 이벤트를 모든 열 머리글에 바인딩 할 수 있습니다. 모든 헤더는 <th> 요소이므로 DOM 지원 cellIndex 속성을 지원합니다. cellIndex 속성은 열 머리글의 인덱스를 제공합니다. colModel에 같은 색인을 사용하면 열의 정의가 표시됩니다. name 속성은 열 이름을 제공합니다.

대응하는 코드는 다음에 대해 수 :

var cm = $grid.jqGrid("getGridParam", "colModel"); 
$("th.ui-th-column", $grid[0].grid.hDiv).bind('contextmenu', function(e) { 
    var $th = $(e.currentTarget).closest("th"); 
    if ($th.length > 0) { 
     alert("the header of the column '" + cm[$th[0].cellIndex].name + 
      "' was clicked"); 
     e.preventDefault(); // don't display standard context menu 
    } 
}); 

The demo 코드를 사용합니다. 그냥 열 머리글의 오른쪽 마우스 클릭을 사용하고이 결과를 볼 것이다 :

enter image description here

+0

가 대단히 감사합니다! jqGrid에 대한 몇 가지 질문이 더 있습니다. – chugh97

+0

@ chugh97 : 환영합니다! – Oleg

1

모든있는 jqGrid 세포가 gridId_columnname로 구성되는 aria-described-by 속성이 있습니다. 이것을 사용하여 열 이름을 가져올 수 있습니다. 열 머리글에 대한

그리드 셀에 대한

..

var cellName = $(e.target).closest('td').attr('aria-described-by'); 
var gridId = 'list1'; 

var columnName = cellName.substr(gridId.length - 1); 

, 올렉의 대답 외에, 당신은이 작업을 수행 할 수 있습니다 ..

var header = $(e.target).closest('th') 
var gridId = 'list1'; 

var columnName = header.attr('id').substr(gridId.length - 1); 
+0

jqGrid의 열 머리글을 오른쪽 클릭하면 ''요소는'e.target' 또는'e.currentTarget'이고, ''요소는 아닙니다. ''요소는''aria-described-by ''와 같은 방식으로 ''의 'id'를 가지고 있습니다. – Oleg

+0

@Oleg : 동의 함. 열의 아무 곳이나 클릭하기위한 솔루션을 제안했습니다. 머리글 또는 열 셀. –

+0

나는 그것을 보았지만 질문은 "열 머리글을 오른쪽 클릭 할 때 열의 이름을 원한다."그리고 열 머리글을 올바르게 클릭하면 $ (e.target) .closest ('td') '찾을 수 없습니다. .closest ('td')'를 .closest ('td, th')'로 변경하면 보편적 인 해결책이 될 수 있지만, ''요소에는 'aria-described-by ''속성에서 얻을 수 있지만 'id'에서 동일한 정보를 얻을 수 있습니다. – Oleg