2016-06-18 49 views
1

我有一個項目列表,我想要做的事情,只要其中一個項目被選中,但問題是,複選框的更改功能沒有與我一起工作。複選框jQuery的更改功能不工作,沒有錯誤

我檢查了函數內部的代碼,它在改變事件之外工作正常。我不確定它不工作的原因,但除了它自己的功能外,還有什麼可能呢?

這裏的變化功能:

$("input[name='checkCoResult']").change(function() { 
    if (this.checked) { 
     $("#searchResultSecond").attr("style", "opacity: 0.6"); 
     $("#searchResultSecond *").attr("disabled", "disabled").off('click'); 
    } 

}); 

,這是產生我的名單代碼:

$.ajax({ 
     url: "CCDMSWebService.asmx/getCoSearchResult", 
     data: JSON.stringify(objectData), 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (response) { 
      var Result = response.d; 
       contantDiv.text(""); 
     $.each(Result, function (index, val) { 
      contantDiv.append('<div class="panel-bod"><label style="margin:2px; border-radius: 10px;border: 1px solid #cc0000;padding: 5px;"><input type="checkbox" value="' + val.companyID + '" name="checkCoResult" class="nnn"> ' 
     +'<img src="images/' + val.companyID + '.png" alt="company logo" width="30%" height="30%">' + val.companyName + ' provides all your needs</label></div>'); 
      }) 
     }, 
     failure: function (msg) { 
     alert(msg); 
     } 
    }); 

回答

-1

,如果你的內容是動態的,然後嘗試

$(document).on("change","input[name='checkCoResult']",function(){ 
    // your code 
}); 
+0

非常感謝。但爲什麼這個工作,而jQuery不是?我只是想了解,以避免類似的問題。 – Nysa

+0

綁定到文檔應該只是最後的手段。更好地使用時間事件中存在的最接近的父代綁定:http://stackoverflow.com/a/12824698/1767412 – billynoah

1

你必須添加選擇器參數,否則事件直接綁定而不是委託,這隻有在元素已讀時才起作用y存在(所以它不適用於動態加載的內容)。你的情況,似乎你已經有一個在你的頁面命名contantDiv目前DIV,所以修改像

contantDiv.on("change","input[name='checkCoResult']",function(){ ... 

退房http://api.jquery.com/on/#direct-and-delegated-events有關詳細信息,你的代碼。

-1

如果將新的HTML注入頁面,最好使用委託事件來附加事件處理程序。

委託事件的優點是它們可以處理後來添加到文檔中的後代元素的事件。

$(staticAncestors).on(eventName, dynamicChild, function() {}); 
+0

爲什麼選擇投票?有人沒有得到委派的活動嗎? ;) – Tushar

相關問題