2011-10-05 75 views
0

問題是,$('#menu').val(menu).trigger('change');$('.parentcheck').val(0).attr('checked', true).trigger('click');會改變它們的狀態,但不會觸發它們的功能$("#menu").change(function() {$(".parentcheck").click(function() {。如何處理這個問題?如何從js內部開始點擊或更改功能

我的js代碼看起來像

$(document).ready(function() { 

    $("#parent").hide(); 
    $(".parentcheck").click(function() { 
     if ($(this).val() === "0") { 
      $("#parent").hide().find('option:selected').removeAttr('selected'); 

     } 
     if ($(this).val() === "1") { 
      if ($("#parent option").length > 0) { 
       $("#parent").show(); 
      } 

     } 
     $("#menu").change(); 
    }); 

    $("#menu").change(function() { 
     var selectedmenu = $("#menu").val(); 
     var parentcheck = $(".parentcheck:checked").val(); 
     if (selectedmenu != '' && selectedmenu != '0') { 
      $.ajax({ 
       type: "POST", 
       url: "processor/optionsgenerator.php", 
       data: { 
        menu: selectedmenu 
       }, 
       success: function (result, status, xResponse) { 
        if (result != '') { 
         if (parentcheck == '0' || !$(".parentcheck").is(":checked")) { 
          $("#parent").hide(); 
         } else { 
          $("#parent").html(result); 
          $("#parent").show(); 
         } 
        } else { 
         alert('Baza ilə əlaqədə problem var.'); 
         $("#parent").hide(); 
        } 
       }, 
       error: function (e) { 
        alert(e); 
       } 
      }); 
     } else $("#parent").hide(); 
    }); 
$('#menu').val(menu).trigger('change'); 
if(parent==0) { 
$('.parentcheck').val(0).attr('checked',true).trigger('click'); 
} 
else { 
$('.parentcheck').val(1).attr('checked',true).trigger('click'); 
$('#parent').val(parent); 
} 
    }); 
+0

操作順序?當tigger開火時,綁定不會被設置... –

+0

那裏有很多負面條件... –

+0

@BradChristie:我可以理解這個錯誤。在JavaScript中,在定義它們之前,引用函數是正常的。一目瞭然,觸發一個事件看起來就像調用一個函數一樣。 – Blazemonger

回答

2

你觸發您已經定義了change處理程序之前的變化。將你的triggers移到你的代碼塊的末尾,它會正常工作。

+0

+1:想到「Duh」。 –

+1

http://jsfiddle.net/GreBh/ - 注意我正在觸發更改兩次,但警報只會熄滅一次。 – Blazemonger

+0

確定所有的工作。現在發生了1個問題:我試圖從選擇菜單中選擇一個由js生成的選項。試着'$('#parent').val(parent);'但它沒有設置。如何處理? – heron