2016-01-11 164 views
0

我知道這個問題已被問到數千次,但我似乎無法弄清楚我的問題。我只需要再看一眼就可以看到我做錯了什麼或者我錯過了什麼。點擊jQuery沒有觸發

這裏是我的代碼:

<div class="image-container"> 
    @foreach (var image in Model) 
    { 
    <a href="#" class="returnImage" data-url="@Request.Url.GetLeftPart(UriPartial.Authority)@image.Url"> 
     <img src="@image.Url" id="UploadImage" data-source="@image.Url" width="200" height="200"> 
    </a> 
    } 
</div> 

<script> 
    $(document).ready(function() { 
    $("div.image-container").on("click", ".returnImage", function(e) { 
     var urlImage = $(this).attr("data-url"); 
     window.opener.updateValue("cke_72_textInput", urlImage); 
     window.close(); 
    }); 
    }); 
</script> 

調試與螢火顯示沒有錯誤,當我把一個斷點上「點擊」功能,這是從來沒有打/永遠不會觸發。我在這裏錯過了什麼?

+0

您是否嘗試過在功能附加一個'alert'框以驗證它是否是發射或不? – kojow7

+0

除了結果之外,你還有什麼?我不知道你用於車把的是什麼樣的框架。 – Ivan

+0

如果你不明白你的**客戶端代碼中發生了什麼**請不要看你的**服務器端代碼** – Amit

回答

0

可能發生的事情是<a>當您點擊它們時,標記優先,抑制您對div.image-container元素的點擊事件。

如果您打算讓用戶單擊整個容器本身,請嘗試爲模型中的每個圖像使用除<a>標籤之外的其他內容。

如果您是在把一個單擊處理程序上的每個<a>標記您的div.image-container內打算,你的jQuery事件行應該是這樣,而不是:

$("div.image-container a").click(function(e) { 
+1

或者在超級小心的情況下,您可以使用.preventDefault()例程函數對其進行緩衝。 –

+0

感謝您的回答!不幸的是,這也不起作用。我認爲他們可能是導致此問題的其他項目中的其他問題。 – Quiver

0

試試這個:

$(".returnImage").on("click", function(e) { 
    //whatever action code 
}); 
0

凡爲沒有任何信息可以觸發,可能是因爲彈出窗口阻止程序認爲您的腳本正在嘗試插入瀏覽器並因此阻止它,尤其是因爲它是一個包含功能的錨定標記會觸發瀏覽器解釋的默認鏈接行爲。下面的代碼是你的一個.preventDefault()行爲例程添加,以防萬一這是問題。編輯:更新編碼更準確地針對您想要的DOM元素(如其他答案所建議的)。

preventDefault API

$(document).ready(function() { 
    $(".returnImage").on("click", function(e) { 
     e.preventDefault(); 
     var urlImage = $(this).attr("data-url"); 
     window.opener.updateValue("cke_72_textInput", urlImage); 
     window.close(); 
    }); 
    }); 
+0

感謝您的回答!不幸的是,這也不起作用。我認爲他們可能是導致此問題的其他項目中的其他問題。我也從來不知道'preventDefault()'做了什麼,所以謝謝你的信息! – Quiver