2011-08-17 59 views
2

不太清楚如何解釋這一點,但在這裏。。當元素綁定到另一個時,.change不起作用。

我有隱藏的功能/基於一個複選框示出:

$( 「#複選框」)變化(change_visibility);

function change_visibility() { 
    if ($("#checkbox").is(":checked")) { 
     $("#theForm").fadeTo("opacity", "1", function() { 
     //End Animation 
    }); 

    } else { 
     $("#theForm").fadeTo("opacity", "0.3", function() { 
     //End Animation 
    }); 
    } 

問題是,現在我已綁定此複選框,其他地方的按鈕和改變()不表現爲我所期望的。

$("#myButton").click(function(){ 
     $("#checkbox").attr("checked", true); 
    }); 

即使複選框被改變,因爲它應該,它似乎沒有被調用change_visibility()函數,因爲它,當我手動點擊它。

任何想法,爲什麼會這樣?

回答

5

無論何時更改輸入元素的狀態或值,都不會觸發更改事件。

但是你可以手動觸發它:

$("#checkbox").prop("checked", true).change(); 
+0

哇超快速謝謝你這麼多!我之前已經看到這個變化(),並且從來不知道那是什麼。現在我明白了。 =) – Stefan

+0

他的回答太快了,我實際上必須等待將其標記爲正確。 – Stefan

0

最簡單的方法是,當你改變這樣做

$("#myButton").click(function(){ 
     $("#checkbox").attr("checked", true); 
     $("#checkbox").change(); 
}); 
0

聽起來就像是.change()事件不會被解僱複選框手動。但解決方案仍然非常簡單。只需調用change_visibility()函數自己:

$("#myButton").click(function(){ 
     $("#checkbox").attr("checked", true); 
     changeVisibility(); 
    }); 
+0

你知道我真的試過這個,它也沒有工作,它甚至沒有調用函數。任何想法爲什麼這不起作用? – Stefan

0

附加一個事件處理change事件並調用按鈕單擊更改方法。

$("#checkbox").change(function() { 
    if (this.checked) { 
     $("#theForm").fadeTo("opacity", "1", function() { 
     //End Animation 
    }); 

    } else { 
     $("#theForm").fadeTo("opacity", "0.3", function() { 
     //End Animation 
    }); 
    }); 


$("#checkbox").attr("checked", true).change(); 
0

嘗試

$("#myButton").click(function(){ 
     $("#checkbox").attr("checked", true).trigger('change'); 
}); 

應觸發更改事件您動態檢查後箱。

相關問題