2010-06-17 2 views
0

Когда я получаю атрибут onclick пользовательских (служб Reporting Services), он дает правильный результат. Однако, когда я пытаюсь использовать indexOf на этом результате он говорит: «Объект не поддерживает это свойство или метод», то есть это хорошо, дает мне длинную строкуjquery attribute indexOf

$('input[id*=CustomCheckBox]').click(function() 
{ 
     alert($(this).attr("onclick")); 


}); 

Но это дает ошибку (объект Безразлично «т поддерживает это свойство или метод):

$('input[id*=CustomCheckBox]').click(function() 
{ 
    if ($(this).attr("onclick").indexOf("SomeString") > -1) 
    { 
      //do some processing here 

    } 
} 

что мне нужно изменить так, что indexOf правильно работает?

+0

Вы не должны использовать 'onclick' как * атрибут *, это будет ненадежным ... это один из способов (и действительный) объявить ** событие ** (а не атрибут * в этом случае), но ничего в спецификации говорит, что он должен оставаться доступным на DOM в качестве атрибута o nce событие подключено. –

+0

Атрибут onclick, вероятно, является функцией, а не строкой. Вызов alert() преобразует его в String перед его отображением. – jimr

+0

@Nick Не использовать сам 'onclick', но это флажок третьей стороны, который имеет' onclick'. Вопрос не в том, что касается этого атрибута, но больше о том, почему 'indexOf' сбой – Victor

ответ

2

Я согласен с Ником Карвером выше, но если вам все еще нужно это сделать, вам просто нужно передать атрибут в виде строки, прежде чем пытаться использовать indexOf. Я быстро проверил его в Safari и, похоже, работал так, как ожидалось.

if (String($(this).attr("onclick")).indexOf("SomeString") > -1) 
{ 
     //do some processing here 

} 
+0

Это не будет работать, как указано выше, например, в firefox атрибут будет 'undefined' :) –

+1

@Nick - Кажется, работает для меня в FF. – user113716

+0

Да, работает и в FF для меня. – derrickp

2

Вы можете использовать onclickсобытие сам, не самый эффективный, но если это единственный вариант ... Вы бы сделать это следующим образом:

$('input[id*=CustomCheckBox]').click(function() { 
    if (this.onclick && this.onclick.toString().indexOf("SomeString") > -1) { 
    alert('found!') 
    } else { 
    alert('not found :('); 
    } 
}); 

You can try a demo here