Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有一种方法可以监听Html元素样式的更改-Backbone.JS_Javascript_Backbone.js_Backbone Events - Fatal编程技术网

Javascript 有没有一种方法可以监听Html元素样式的更改-Backbone.JS

Javascript 有没有一种方法可以监听Html元素样式的更改-Backbone.JS,javascript,backbone.js,backbone-events,Javascript,Backbone.js,Backbone Events,我有以下HTML模板: <li id="imovel" style="<%= display %>"> <div class="thumbnail"> <a href="#"> <img src="http://placehold.it/90

我有以下HTML模板:

    <li id="imovel" style="<%=  display %>">
        <div class="thumbnail">                      
          <a href="#">
            <img src="http://placehold.it/90x60"></img>
            <%= textvar %>
          </a>
        </div>                                    
    </li>
当我在display中执行
change:display
时,我的意思是侦听el样式显示属性中的更改


可以这样做吗?

能否更改代码以触发隐藏/显示的元素上的事件?这相当于在设置“显示不显示/隐藏”时添加两行<代码>$(el).trigger('display:changed')对正在更改其显示状态的元素执行。然后从Backbone.View只需在元素
disapearingElement.on('display:changed',doSomething)

任何其他解决方案都会非常混乱,并给浏览器带来持续的负载。您必须创建helper方法,该方法将使用带有setInterval/setTimeout的轮询,该方法将始终检查元素的状态,并在元素更改时触发回调/自定义事件-这是跨浏览器实现它的唯一方法


但老实说。。。不要留下乱七八糟的代码——如果对你来说没问题的话,好吧——但是想想那些在你离开后会使用这些代码的人:P

为什么视图不能控制隐藏和显示本身?因为这个逻辑已经在起作用了,我不想弄乱它。不,我不想留下乱七八糟的代码。。。将尝试此自定义事件选项,否则我将重建所有站点,因为我将不得不维护它:D。。。谢谢
var imovelView = Backbone.View.extend({
    
    el: $('#imovel')
    
    ,template:  _.template( $("#listing_template").html())
    
    ,events: {
        "change:display #imovel" : "activate"
    }
    
    ,initialize: function(){
        this.on('change:display', this.toggle, this);
        this.collection.bind('add', this.render, this);
    }
    
    ,activate: function(item){
        alert("change display");
    }

    ,render: function(item){
        var showPerPage = $('#show_per_page').val();
        var totalEntries = this.collection.length;

        var pageMax = Math.ceil( showPerPage/totalEntries );
        var displayValue = "display: none;";

        if(totalEntries <= showPerPage){
            displayValue = "display: block;";
        }

        var variables = { textvar: item.get("Lat"), display: displayValue };        
        var template = this.template( variables );

        $('#max_page').val(pageMax);
        $('#content').append( template );
        resizeViewport();
    }
    
});