7
votes

Toot de cellule dans SlickGrid

Certaines cellules de ma table slickgrid ont myClass classe.

J'ai ajouté une info-bulle pour eux comme ceci: xxx

Ça fonctionne bien , mais si je fais défiler la table en bas, puis faites-le rebondir sur le dessus, l'info-bulle n'apparaît plus.

peut suggérer une solution de contournement?

Merci! < / p>


0 commentaires

4 Réponses :


4
votes

Essayez:

$('.myClass').live('mouseover mouseout', function(event) {
 // works only on jQuery 1.4.1 and up
  if (event.type == 'mouseover') {
    // Mouse enters 
  } else {
    // Mouse leaves
  }
});


2 commentaires

Excellent ! Ça marche :) Une chose me dérange: je vois dans les docs que "la méthode de .hover () lie les gestionnaires pour les événements de MouseNerer et de Mouseleave". Alors, pourquoi remplacer Mouseover avec MouseNerer ne fonctionnera pas? J'ai vérifié et j'ai découvert que si je mettez sourisenter au lieu de Mousousever , alors fonction (événement) {..} est appelé aussi alors que Event.Type = "Mouseover" . Pourquoi donc ? Merci pour ton aide !


Live () est obsolète, resp. Il n'existe plus dans JQuery 1.9.



15
votes
        grid.onMouseEnter.subscribe(function(e, args) {
            var cell = grid.getCellFromEvent(e)
            var row = cell.row
            var item = dataView.getItem(row);
            //do whatever
        });

        grid.onMouseLeave.subscribe(function(e, args) {
            //do whatever
        });
cell, row and item are just examples for how to get to data

0 commentaires

3
votes

Il y a un plugin pour SlickGrid qui affichera des info-bulles pour des articles trop gros pour montrer dans une cellule (si c'est ce que vous cherchez finalement à le faire): SlickGrid: Comment afficher le texte intégral des entrées de longue cellule?


0 commentaires

0
votes
1. include ../slick/plugins/slick.autotooltips.js
ex)     

    <script src="/jsp/slick/plugins/slick.autotooltips.js"></script>

2. add code

    $.get(url,function(data){

    ...

    grid.registerPlugin( new Slick.AutoTooltips({ enableForHeaderCells:
    true }) );

    ...


more...

use jquery.ui.tooltips

ex)
<link rel="stylesheet" href="/jsp/jui/themes/base/jquery.ui.tooltip.css"/>
<script src="/jsp/jui/ui/jquery.ui.core.js"></script>
<script src="/jsp/jui/ui/jquery.ui.widget.js"></script>
<script src="/jsp/jui/ui/jquery.ui.position.js"></script>
<script src="/jsp/jui/ui/jquery.ui.tooltip.js"></script>

open slick.grid.js and modify function 2436(line)

    function setActiveCellInternal(newCell, opt_editMode) {
      if (activeCellNode !== null) {
        makeActiveCellNormal();
        $(activeCellNode).removeClass("active");
        try{$( document ).tooltip("destroy");}catch(e){}    // <<<< add code
        try{$( document ).tooltip();}catch(e){}         // <<<< add code
        if (rowsCache[activeRow]) {
          $(rowsCache[activeRow].rowNode).removeClass("active");
        }
      }

1 commentaires

Il serait préférable d'expliquer pourquoi votre code est la bonne réponse et où est la solution.