2015-04-03 34 views
0

我動態創建的視圖鏈接到呼叫控制器的方法:如何在用戶點擊動態創建的鏈接時調用JS方法。 JQuery的,ASP.NET MVC

$(document).ready(function(){ 
    var data="SomeDataToController"; 
    var link=document.createElement('a'); 
    var linkText=document.createTextNode("Delete"); 
    link.appendChild(linkText); 
    link.title="Title text"; 
    link.href=HelloWorld(ee); 
    document.getElementById("imageBox1"). 
    appendChild(link); 


    } 
    function HelloWorld(data){ 
    alert(data);} 

如何調用方法的HelloWorld(數據)只是如果用戶點擊鏈接「刪除」?

我試着在「onclick」事件中調用代碼,但是在構建標籤時立即調用HelloWorld()函數。不過,我想在用戶點擊鏈接時致電。

+0

$(鏈接)。單擊(的HelloWorld)? – Mike 2015-04-03 10:01:53

回答

2

您正在嘗試附加事件。您需要使用addEventListenerattachEvent,而不是直接將函數分配給href

if (window.addEventListener) { 
    link.addEventListener('click', HelloWorld(ee), false); 
} else if (window.attachEvent) { 
    link.attachEvent('onclick', HelloWorld(ee)); 
} 
+0

這不會立即調用HelloWorld並將其返回值設置爲函數處理程序,而不是函數本身? – 2015-04-03 10:26:01

1

使用jQuery的.on命令,但將其用作委託。這是爲了在加載頁面後處理對象的創建。

例如,您可以在<body>級別附加.on,並說每次點擊「clickme」類的<a>時,它都會執行您的方法。

事情是這樣的:

$(body).on("click", ".clickMe", function (e) { 
    e.preventDefault(); 
    HelloWorld('my value taken from data- attribute or whatever'); 
}); 
+0

非常善良的顯示一些代碼:) – StepUp 2015-04-03 10:31:21

+0

實現了一個樣本。寫沒有測試它,但你明白了 – Iridio 2015-04-03 14:10:01

0
$(document).on("click", "a", function(data){ 
    alert(data); 
}); 
+2

我敢肯定,他不希望爲文檔中的所有標籤添加點擊處理程序 – 2015-04-03 10:20:46

0

我建議使用jQuery來創建動態HTML。

$("#imageBox1").append('<a href="' + javascript:alert(1); + '">' + text + '</a>'); 
1

這裏有兩個主要問題:你不應該試圖通過將HREF的東西來設置一個onclick處理和分配,當你實際調用HelloWorld()功能,所以基本上你分配什麼是功能返回到href。

你還是使用addEventListener附加上點擊呼叫HelloWorld()功能:

link.addEventListener('click', function() { HelloWorld(data); }) 

如果需要9版本之前,支持IE瀏覽器,你還需要有條件爲,並使用attachEvent()相當。

1

如果你想在用戶點擊你的元素時執行JavaScript函數,你可以使用類似的東西。

$(document).ready(function() { 
     var data = "SomeDataToController"; 
     var link = document.createElement('a'); 
     var linkText = document.createTextNode("Delete"); 
     link.appendChild(linkText); 
     link.title = "Delete"; 
     link.onclick = eval(getDeleted); 
     document.getElementById("imageBox1").appendChild(link); 

    }); 

    function getDeleted() { 

     var f = "delete"; 
     Delete(f); 
    } 

    function Delete(f) { 
     alert(f); 
    } 

但我想使用類似這樣的jQuery功能。

`

function myHandler(event) { 
    alert(event.data.foo); 
} 
$('#imageBox1 a').on("click", { 
    foo: "bar" 
}, myHandler); 

`

相關問題