Обработчик щелчка Raphael не запускается

#javascript #click #raphael

#javascript #нажмите #raphael

Вопрос:

(Ранее я также пробовал jQuery, который, похоже, тоже не работает.)

У меня есть emitterButton , который является кругом в Raphael, определенный следующим образом внутри функции:

   emitterButton = canvas.circle(emitter_center_x,emitter_center_y,BUTTON_RADIUS)
                        .attr({'fill':BUTTON_COLOR_UNPRESSED})
                        .attr({'id':'emitterButton'});
  

. Когда я пытаюсь подключить обработчик щелчка, через

 $(document).ready(function(){
  console.log("This is a hi!");
  console.log(emitterButton);
  emitterButton.click(function(){
    console.log("Hi!");
    if(emitterButton.attr('fill')==BUTTON_COLOR_UNPRESSED){
      console.log("Hi, again!");
      emitterButton.attr({'fill':BUTTON_COLOR_PRESSED});
    }
  });
});
  

первые два console.log оператора запускаются, но следующие два нет. Почему моя функция щелчка не работает?

Комментарии:

1. Зачем говорить «Я ранее также пробовал jQuery», когда вы все еще используете jQuery?

2. Ранее я использовал $ (‘#emitterButton’), тег идентификатора jQuery, который я прикрепил к emmiterButton, а не сам элемент emitterButton Raphael в строке emitterButton.click(функция(){…})

3. О … ХОРОШО. Не могли бы вы создать скрипку или что-то подобное, чтобы мы могли больше видеть, что происходит?

4. rawgit.com/ylx/PhET/master/bendingLight/bendingLight.html

5. Я не совсем уверен, что вы можете установить идентификатор элементов Raphael таким образом (я думаю, это может зависеть от версии, но не уверен). Попробуйте emitterButton.node.id =’emitterButton’ из интереса. Я бы также следил за вашей переменной scope в функциях, я думаю, что нет конкретной проблемы, чтобы остановить ее работу там, но вы можете захотеть установить где-нибудь var для emitterButton, чтобы было ясно, что (возможно, я пропустил это).