diff --git cck_select_other.js cck_select_other.js
index 96716b8..e5fa210 100644
--- cck_select_other.js
+++ cck_select_other.js
@@ -20,13 +20,14 @@
         field_str = field_str.replace(/_/g, '-');
         var lang = new String(MyCCKSelectOther.lang);
         var delta = new String(MyCCKSelectOther.delta);
-        var field_id = '#edit-field-' + field_str + '-' + lang + '-' + delta + '-select-other';
+        var field_wrapper = '#field-' + field_str + '-' + lang + '-' + delta + '-wrapper';
         var ActionBind = (($.browser.msie == true) ? 'click' : 'change');
 
         $(document).ready( function() {
-          $(field_id+'-list').bind(ActionBind,function() {
+          // We need to go up further up the element chain to work around 'add another item'
+          $(field_wrapper).find('select').bind(ActionBind,function() {
             // Add parent() to hide input wrapper
-            $(field_id+'-text-input').parent().css('display', ($(this).val() == "other") ? 'block' : 'none');
+            $(this).parents(field_wrapper).find('input').parent().css('display', ($(this).val() == "other") ? 'block' : 'none');
           }).trigger(ActionBind);
         });
       });
diff --git cck_select_other.module cck_select_other.module
index 9ee9a41..bce02c9 100644
--- cck_select_other.module
+++ cck_select_other.module
@@ -91,6 +91,10 @@ function cck_select_other_field_widget_form(&$form, &$form_state, $field, $insta
     $items[] = array('value' => '');
   }
 
+  if (!isset($items[$delta])) {
+    $items[$delta] = array('value' => '');
+  }
+
   if (!isset($options[$items[$delta]['value']])) {
     $def = 'other';
   }
@@ -101,6 +105,8 @@ function cck_select_other_field_widget_form(&$form, &$form_state, $field, $insta
   $element = array(
     '#type' => $instance['widget']['type'],
     '#default_value' => '',
+    '#prefix' => '<div id="field-' . substr($field['field_name'], 6) . '-' . $langcode . '-' . $delta . '-wrapper">',
+    '#suffix' => '</div>',
   );
 
   $element['select_other_list'] = array(
