Javascript 作为jquery选择器的字符串和变量串联是';不起作用。可能的原因是关闭

Javascript 作为jquery选择器的字符串和变量串联是';不起作用。可能的原因是关闭,javascript,jquery,twitter-bootstrap,Javascript,Jquery,Twitter Bootstrap,我在调整。对于原始方法,在js文件中,我在面板中添加了引导accordion listenershow.bs.collapse: TabCollapse.prototype._createAccordionGroup = function(parentId, $heading){ var tabSelector = $heading.attr('data-target'), active = $heading.data('bs.tabcollapse

我在调整。对于原始方法,在js文件中,我在面板中添加了引导accordion listener
show.bs.collapse

   TabCollapse.prototype._createAccordionGroup = function(parentId, $heading){
        var tabSelector = $heading.attr('data-target'),
            active = $heading.data('bs.tabcollapse.parentLi').is('.active');

        if (!tabSelector) {
            tabSelector = $heading.attr('href');
            tabSelector = tabSelector && tabSelector.replace(/.*(?=#[^\s]*$)/, ''); //strip for ie7
        }

        var $tabPane = $(tabSelector),
            groupId = $tabPane.attr('id') + '-collapse',
            $panel = $(this.options.accordionTemplate($heading, groupId, parentId, active));
        $panel.find('.panel-heading > .panel-title').append(this._tabHeadingToPanelHeading($heading, groupId, parentId, active));
        $panel.find('.panel-body').append($tabPane.contents().detach())
            .data('bs.tabcollapse.tabpane', $tabPane);
     $("#"+groupId).on('show.bs.collapse', function () {
         console.log("show");
        });
        return $panel;
    };
添加的行:

 $("#"+groupId).on('show.bs.collapse', function () {
             console.log("show");
            });

我闻到了关闭的问题,但我不能完全指出它。那么它在哪里呢?

它不起作用的唯一原因可能是,自定义事件没有映射到这些元素,或者事件触发没有正确发生(实际原因未知)

但是从代码、注释和你想要达到的(据我所知)来看,当你打开一个手风琴标签时,你需要做些什么。因此,我认为您可以通过使用给定的API来实现这一点,而不是对其进行调整。简单的代码如下所示:

$(document).on("shown.bs.collapse",".panel-collapse",function(e){
   $(".panel-heading").css({"background-color": ""});
   $(e.currentTarget).closest(".panel").find(".panel-heading").css({"background-color":"red"});
 });
这是一把小提琴:

更新:

我尝试了这个调整,并设法让它以某种方式工作,而不是直接使用
$(“#”+groupId)
,我这样使用它:

$(document).on("shown.bs.collapse","#"+groupId,function(e){
  console.log(e);
});
小提琴:


希望对您有所帮助

您知道groupId的价值吗?有任何控制台错误吗?没有,没有任何控制台错误。是的,我记录了,它是非空值。如果我硬编码值而不是groupId,它会工作。您通常可以为
$('#'+groupId)
记录一些内容吗?如果是这样,则可能是事件没有按预期触发。是否已尝试将硬编码值指定给
groupId
变量,然后重试?我认为变量中有一些无效字符,请尝试修剪它,然后使用。我没有发现代码中有任何问题。。。。下面是一个简单的例子:我能想到的第一个原因是它是
show.bs.collapse
,而不是
show.bs.collapse
。我认为,
$(“#”+groupId)
可能适用于上述事件。只要测试一下,看看它是否有效。