我有一个javascript函数,可以通过添加/删除“隐藏”类来展示和隐藏文档上的html DIV,看起来这个
function Expose (castid){
if ( $('#newsitemcontent-' +castid).hasClass('hidden')){
$('#newsitemcontent-' +castid).removeClass('hidden');
$('#broadcast-' +castid).addClass('ExposeNews');
} else {
$('#newsitemcontent-' +castid).addClass('hidden');
$('#newsitemcontent-' +castid).slideUp("fast");
$('#broadcast-' +castid).removeClass('ExposeNews');
}
return false;
}
此函数正常使用已打印的DIV,它默认来自php,但是如果使用javascript编写任何div,例如由
编写的DIV$(output).insertBefore('.broadcast:first').fadeIn('slow');
它不会运行。我认为该函数无法看到从javascript打印的DIV的DIV ID
jquery打印的html例如
<div id="broadcast-1" class="broadcast news highlightedbroadcast" onclick="Expose(1)">
<div class="newsitemtitle">
<a class="stopp" href="#" target="_blank" title="title">title</a>
</div>
</div>
<div id="newsitemcontent-1>" class="newsitemcontent hidden">
msg
</div>
<div class="newsitemcontentmisc">something will come here</div>
</div>
并且javascript正在打印这样的html(它使用https://github.com/janl/mustache.js/blob/master/mustache.js来渲染隐藏div内容中的文本作为模板)
var solobroadcast_template =$("#hidden_solobroadcast").html()
var convertedvars = {
broadcasts_ids: this.castid,
broadcasts_titles: this.casttitle,
broadcasts_castmsgs: function (){
return contentmsg;
}
};
var output = Mustache.render(solobroadcast_template, convertedvars);
$(output).insertBefore('.broadcast:first').fadeIn('slow');
问题是,Expose功能在已经打印的内容下工作正常,但是如果页面使用javascript打开新代码,则问题是工作,但隐藏的类没有添加或删除。
任何建议?
答案 0 :(得分:0)
您的代码似乎很好。尝试使用on():
<div id="broadcast-1" class="broadcast news highlightedbroadcast" data-bc="1">
$('.broadcast').on('click', function() {
Expose($(this).attr('id').split('-')[1]);
// OR
// Expose($(this).data('bc'));
});