Skip to:
Content

BuddyPress.org

Changeset 7411


Ignore:
Timestamp:
10/11/2013 05:37:33 PM (13 years ago)
Author:
boonebgorges
Message:

Improve JS for "Select" dropdown on messages screens

  • Use jQuery delegation, to ensure that items added to the DOM dynamically (as in an AJAX search query) are listening for clicks
  • Simplify logic

See #5070

Props imath

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-templates/bp-legacy/js/buddypress.js

    r7385 r7411  
    11921192
    11931193        /* Selecting unread and read messages in inbox */
    1194         jq("#message-type-select").change(
    1195                 function() {
    1196                         var selection = jq("#message-type-select").val();
    1197                         var checkboxes = jq("td input[type='checkbox']");
    1198                         checkboxes.each( function(i) {
    1199                                 checkboxes[i].checked = "";
    1200                         });
    1201 
    1202                         switch(selection) {
    1203                                 case 'unread':
    1204                                         var checkboxes = jq("tr.unread td input[type='checkbox']");
    1205                                         break;
    1206                                 case 'read':
    1207                                         var checkboxes = jq("tr.read td input[type='checkbox']");
    1208                                         break;
    1209                         }
    1210                         if ( selection != '' ) {
    1211                                 checkboxes.each( function(i) {
    1212                                         checkboxes[i].checked = "checked";
    1213                                 });
    1214                         } else {
    1215                                 checkboxes.each( function(i) {
    1216                                         checkboxes[i].checked = "";
    1217                                 });
    1218                         }
    1219                 }
    1220         );
    1221 
     1194        jq( 'body.messages #item-body div.messages' ).on( 'change', '#message-type-select', function() {
     1195                var selection = this.value;
     1196                var checkboxes = jq( "td input[type='checkbox']" );
     1197
     1198                checkboxes.each( function(i) {
     1199                        checkboxes[i].checked = "";
     1200                });
     1201
     1202                var checked_value = "checked";
     1203                switch ( selection ) {
     1204                        case 'unread' :
     1205                                checkboxes = jq("tr.unread td input[type='checkbox']");
     1206                                break;
     1207                        case 'read' :
     1208                                checkboxes = jq("tr.read td input[type='checkbox']");
     1209                                break;
     1210                        case '' :
     1211                                checked_value = "";
     1212                                break;
     1213                }
     1214
     1215                checkboxes.each( function(i) {
     1216                        checkboxes[i].checked = checked_value;
     1217                });
     1218        });
     1219       
    12221220        /* Bulk delete messages */
    12231221        jq("#delete_inbox_messages, #delete_sentbox_messages").on( 'click', function() {
  • trunk/bp-themes/bp-default/_inc/global.js

    r7385 r7411  
    11761176
    11771177        /* Selecting unread and read messages in inbox */
    1178         jq("select#message-type-select").change(
    1179                 function() {
    1180                         var selection = jq("select#message-type-select").val();
    1181                         var checkboxes = jq("td input[type='checkbox']");
    1182                         checkboxes.each( function(i) {
    1183                                 checkboxes[i].checked = "";
    1184                         });
    1185 
    1186                         switch(selection) {
    1187                                 case 'unread':
    1188                                         var checkboxes = jq("tr.unread td input[type='checkbox']");
    1189                                         break;
    1190                                 case 'read':
    1191                                         var checkboxes = jq("tr.read td input[type='checkbox']");
    1192                                         break;
    1193                         }
    1194                         if ( selection != '' ) {
    1195                                 checkboxes.each( function(i) {
    1196                                         checkboxes[i].checked = "checked";
    1197                                 });
    1198                         } else {
    1199                                 checkboxes.each( function(i) {
    1200                                         checkboxes[i].checked = "";
    1201                                 });
    1202                         }
    1203                 }
    1204         );
    1205 
     1178        jq( 'body.messages #item-body div.messages' ).on( 'change', '#message-type-select', function() {
     1179                var selection = this.value;
     1180                var checkboxes = jq( "td input[type='checkbox']" );
     1181
     1182                checkboxes.each( function(i) {
     1183                        checkboxes[i].checked = "";
     1184                });
     1185
     1186                var checked_value = "checked";
     1187                switch ( selection ) {
     1188                        case 'unread' :
     1189                                checkboxes = jq("tr.unread td input[type='checkbox']");
     1190                                break;
     1191                        case 'read' :
     1192                                checkboxes = jq("tr.read td input[type='checkbox']");
     1193                                break;
     1194                        case '' :
     1195                                checked_value = "";
     1196                                break;
     1197                }
     1198
     1199                checkboxes.each( function(i) {
     1200                        checkboxes[i].checked = checked_value;
     1201                });
     1202        });
     1203       
    12061204        /* Bulk delete messages */
    12071205        jq("a#delete_inbox_messages, a#delete_sentbox_messages").click( function() {
Note: See TracChangeset for help on using the changeset viewer.