2014-12-08 4 views
0

Мне нужно найти элемент с классом MyClass1, у которого есть номер атрибута. Моя попытка:jquery complex selector class + attribute

$(".MyClass1[number=" + userId + "]") 

но это не сработало. Где моя ошибка?

<tr class = "Myclass2"> 
    <td> 
    <a href="#" number="5" title="checkselector" class="MyClass1">blablabla=)</a>   
    </td> 
</tr> 
+2

Вы можете разместить HTML, который вы пытаетесь выбрать? – j08691

+0

Вы уверены, что 'userId' имеет правильное значение? То, что у вас есть, должно работать. Может быть, поделитесь еще несколькими кодами? –

+0

'number =" userId "' Uhm? – Jonathan

ответ

2

два аспекта:

  1. Что вы соответствие

    Если вы просто хотите знать, что это имеет атрибут, не установлен на конкретное значение, оставь = и значение:

    $(".MyClass1[number]") 
    

    Это wi ll соответствует любому элементу с атрибутом number и классу MyClass1, который существует, когда выполняется эта строка кода.

    Из ваших прав, похоже, вы пытаетесь сопоставить определенный номер. Предполагая, что userId содержит 12:

    var userId = 12; 
    

    ... тогда ваш код хорошо:

    $(".MyClass1[number=" + userId + "]") 
    

    ... потому, что имеет значение:

    $(".MyClass1[number=12]") 
    

    You можете в кавычки значение, но вы только нужно, если значение содержит пробелы или несколько o а не буквенно-цифровые символы. Если вы знаете, что это число (и поэтому содержат только цифры), они не нужны.

  2. Когда вы его соответствие

    Ранее я сказал «Это будет соответствовать любому элементу с ..., который существует при запуске, что строка кода.» Это важно. Если код в блоке сценария выше элемента, он не найдет его, потому что элемент еще не существует:

    <!-- Doesn't work --> 
    <script> 
        $(".MyClass1[number=12]").css("color", "green"); 
    </script> 
    <!-- ... --> 
    <a href="#" number="12" title="@Resources.Appoint" class="MyClass1">Joe BLoggs</a> 
    

    Но если сценарий после, то этот элемент существует и можно найти:

    <a href="#" number="12" title="@Resources.Appoint" class="MyClass1">Joe BLoggs</a> 
    <!-- Works --> 
    <script> 
        $(".MyClass1[number=12]").css("color", "green"); 
    </script> 
    <!-- ... --> 
    

    обычная рекомендация состоит в том, чтобы поместить свои скрипты в конце страницы, непосредственно перед закрывающим тегом </body>. Если вы не контролируете, куда они идут, хотя, вы можете использовать функцию ready JQuery в:

    $(document).ready(function() { 
        // ...your code here... 
    }); 
    

    ...который также может быть сокращен до:

    $(function() { 
        // ...your code here... 
    }); 
    
+0

извините за немного неправильный вопрос =) его число) 5, например –

+0

Работает нормально с переменной? http://jsfiddle.net/jznpk5bg/ – Jonathan

2

Вы отсутствующие цитат:

$(".MyClass1[number='" + userId + "']") 
+1

Цитаты не требуются, если в ID не указаны пробелы или некоторые из них. –

Смежные вопросы