2015-02-04 2 views
0

У меня есть gridview с ImageButton, который запускает форму редактирования. Мне нужно получить окружающий элемент (Row), чтобы определить идентификатор. Проблема в том, что onClientClick запускаю функцию JS и отправляю «this» в качестве параметра. Теперь я пытаюсь сделать объект JQuery из него, как это:Невозможно преобразовать вход (ImageButton) в jQuery

$(sender) 

Но я получаю такую ​​ошибку:

Error: An invalid or illegal string was specified

Я не знаю, в чем проблема:/ Здесь я ставлю также HTML моего контроля:

<input id="ctl00_PlaceHolderMain_GrdTestScenarios_grdTestScenario_ctl02_EditButton" type="image" style="border-width:0px;" onclick="return openPopup(this, url , title);" alt="Delete" src="Images/edit.png" name="ctl00$PlaceHolderMain$GrdTestScenarios$grdTestScenario$ctl02$EditButton"> 

Любая помощь будет оценена

+0

Если вы создаете событие click с jquery, вы можете получить доступ к элементам щелчка t с '$ (this)'. –

+1

Что такое openPopup? – dfsq

+0

Вы имеете в виду вот это? $ (. "class") .click (function() { некоторый код }); –

ответ

1

С вашего открытия поста, ваш вклад, как это:

<input id="ctl00_PlaceHolderMain_GrdTestScenarios_grdTestScenario_ctl02_EditButton" type="image" style="border-width:0px;" onclick="return openPopup(this, url , title);" alt="Delete" src="Images/edit.png" name="ctl00$PlaceHolderMain$GrdTestScenarios$grdTestScenario$ctl02$EditButton"> 

Это означает, что в openPopup() функции в файле JS должен выглядеть следующим образом:

function openPopup(this, url, title) { 
    var $this = $(this); // gets your the element that was clicked 
    var row = $this.parents("tr"); // gets the parent row depending on HTML structure 
} 

ИЛИ - вы можете включить ваш JS на странице aspx следующим образом:

<script type="text/javascript"> 

$(document).ready(function() { 
    $("#<%=EditButton.ClientID%>").click(function() { 
     var $this = $(this); // gets the element that is clicked 
     var row = $this.parents("tr"); // gets parent row depending on HTML structure 
    }); 
}); 

</script> 
+0

Проблема была, как почти всегда - банальная. Я не импортировал файл jQuery в .aspx, который вызывал это поведение. В любом случае это странно, потому что, когда я пытался использовать i.e. $ (". Class"), он работал правильно. Ваш пост дал мне эту подсказку как-то :) Большое спасибо за помощь, ребята! –

+0

Нет проблем, рад, что вы отсортированы. Рад помочь в чем-то! – 97ldave

0

Если вы пытаетесь т о запуске всплывающего окна по нажатию этого элемента можно использовать селектор JQuery и захватить идентификатор (хотя идентификатор довольно долго):

$("#ctl00_PlaceHolderMain_GrdTestScenarios_grdTestScenario_ctl02_EditButton").click(function(){ 
    //launch 
}); 

Это будет поймать событие щелчка на входе и выполнить любой код, который вы используете для запуска ваше всплывающее окно.

+1

вы должны использовать: '$ (" # <% = EditButton.ClientID%> ")' для вашего селектора, поскольку он похож на контроль на стороне сервера. – 97ldave

+0

Jordan У меня есть несколько таких кнопок, так что это неправильный способ: /. Дейв, используя свой метод, мне нужно запустить цикл, чтобы накрыть все кнопки, не так ли? –

+0

Я отвечал на ответ Иордании, извините. Но нет, вам не нужно было бы перебирать все. Вы будете делать '$ (" # <% = EditButton.ClientID%> "). Click (function() {$ (this)});' - '$ (this)' вытащите кнопку, которая была нажата. Чтобы получить элемент строки, вы можете сделать '$ (this) .parents (" tr ");' в зависимости от вашей структуры HTML. – 97ldave