2010-10-29 5 views
14

Я использую SVG вместе с jQuery в своем приложении Mvc. Я рисую серию прямоугольников на своей странице, и то, что я хотел бы сделать, это прикрепить событие click или mouseover для каждого прямоугольника, скажем, всплывающее окно предупреждения. Я пытался что-то вроде этого, до сих пор:Событие Click для прямоугольника SVG

$("rect[id='Y6']").attr('onclick', function() { alert("Hello!") }); 

и

$("rect[id='Y6']").live('click', function() {  
    alert("Hello!"); 
}; 

Но, к сожалению, ни один из этих событий действительно работал для этого элемента управления. Кто-нибудь знает, как это сделать?

EDIT:

Я добавив яваскрипт код, я использую ниже:

<script type="text/javascript"> 
    /*function resetSize(svg, width, height) { 
     svg.configure({ width: width || $(svg._container).width(), 
      height: height || $(svg._container).height() 
     }); 
    }*/ 
    function onLoad(svg, error) { 
     //svg.text(10, 20, error || 'Loaded into ' + this.id); 
     //resetSize(svg, null, null); //'100%', '100%'); 
    } 

    $(function() { 
     $('#layout').svg({}); 

     var svg = $('#layout').svg('get'); 
     svg.load('<%= Url.Action("Layout", new{ id = Model.Id }) %>', { //<%= Url.Content("~/media/svg/lion.xml") %>', { 
      addTo: false, 
      changeSize: false, 
      onLoad: onLoad 
     }); 
    });  

$('rect#Y6').click(function(){ 
    alert('hello'); 
}); 

</script> 

Прямоугольников загружаются из SVG изображения.

ответ

15

Ваш код, чтобы добавить click обработчик должен быть частью функции onLoad - с этим изменением it works for me.

+1

Спасибо, Роберт, попробовав написать, как вы предложили, это сработало! Большое спасибо! – Hallaghan

+0

Для других я боролся с событием мобильного клика и работает с '$ (document) .on ('click touch', '.button', function() {...});' –

+0

Дискриминация в отношении треугольников, которые является. – geotheory

2

Попробуйте это:

$('rect#Y6').click(function(){ 
    alert('hello'); 
}); 
+0

Это тоже не сработало, Кен. Однако я ценю помощь. Элемент управления был выполнен следующим образом: Hallaghan

+0

@ Халлахан, похоже, работает здесь: http: //jsfiddle.net/YcV3c/. –

+0

Теперь, это довольно странно. Используя firebug, я замечаю, что когда я загружаю страницу, она правильно вводит событие click. Но при нажатии на прямоугольник ничего действительно не происходит, и событие никогда не запускается. У вас есть какая-то подсказка? EDIT: Если вы хотите увидеть мой код jquery или узнать какие-либо подробности о моих файлах, я добавлю их в свой комментарий. – Hallaghan