如何在已经监听点击的jQuery插件的区域内检测到点击?

时间:2014-04-10 12:44:44

标签: javascript jquery coffeescript jquery-bar-rating

我正在使用jQuery Bar Rating Plugin。使用该插件的所有内容都可以正常工作(它有效地将选择列表转换为一系列可点击的图像),但我希望能够显示'当用户从插件所控制的选择列表中选择某些内容时,页面上其他位置的隐藏字段。

明确我正在尝试做什么

当用户更新Bar Rating显示的评分时,我想显示一个保存按钮以确认更改。如果用户尚未更改评级,我不希望显示保存按钮。

尝试1

$('#my-div).click ->
  $('#div-to-be-revealed').toggleClass('invisible')

但是代码永远不会触发,因为插件正在观看div的子节点(实际会被点击的内容)并且它会点击'点击'在此代码有机会运行之前。

尝试2

$("#my-div").bind "DOMSubtreeModified", ->
  $('#div-to-be-revealed').toggleClass('invisible')

只要修改Bar Rating插件修改的div,就会触发上述代码。问题是,在页面的初始加载期间多次触发事件(因为插件正在更新元素),并且当我的鼠标悬停在插件在悬停时修改的div元素时触发事件。

如果不修改插件的代码,我如何检测用户何时更新了“选择列表”中的值?'由Bar Rating插件管理?

1 个答案:

答案 0 :(得分:1)

只需使用回调方法:

from the docs

  

回调

     

onSelect:function(value,text)选择评级时触发。

     

onClear:function(value,text)清除评级时触发。

     

onDestroy:function(value,text)在评级被销毁时触发。

我相信你会使用:onSelect回调。

$('#example-e').barrating('show', {
        onSelect:function(value, text) {
        //your code goes here.
        $('#div-to-be-revealed').toggleClass('invisible')
        alert('Selected rating: ' + value);
    }
});