2015-01-21 2 views
1

У меня есть HTML таблицу со строкой, которая выглядит как:Javascript: функция оператор требует имя

<tr> 
    <td><input type="checkbox" name="check[]" value="265"></td> 
       <td>265</td> 
        <td>NO MATCH</td> 
        <td>NO MATCH</td> 
        <td>No</td> 
        <td>0</td> 
        <td>f79a8316891</td> 
       </tr> 

Я пытаюсь построить функцию JQuery, которая будет выделить ячейку, только если он начинается с «NO» , До сих пор у меня есть:

$("td").hover(function() { 
    var contents = $(this).html() ; 
    if (contents.match("^NO")) { 
      function() { 
      $(this).append($("<span> ***</span>")); 
      }, function() { 
      $(this).find("span:last").remove(); 
      } 
    } 


    }); 

Но я получаю ошибку в названии. Что я делаю не так?

+0

Синтаксис для 'парении()' функция далеко. Что именно ты пытаешься сделать? –

+0

Что это за 'функция() {' предполагается делать? – Bergi

+0

Вы определяете функцию без имени и немедленного вызова. Невозможно вызвать эту функцию (поэтому вы получаете ошибку). Кроме того, не определяйте функцию в инструкции 'if'. Это плохо, потому что у JavaScript нет блока для определения функций. – Halcyon

ответ

5

У вас есть функции не в том месте. Попробуйте что-то вроде этого:

$("td").hover(function() { 
    var contents = $(this).html() ; 
    if (contents.match("^NO")) { 
     $(this).append($("<span> ***</span>")); 

    } 
}, function() { 
     $(this).find("span:last").remove(); 
}); 

Функции парения JQuery занимает две функции, как это параметры, первую для «мышей над» и второй для «мышей из». Вы просто помещаете эти функции в неподходящее место в исходном коде. Для получения дополнительной информации о зависании см. http://api.jquery.com/hover/

+4

Стоит быть понятным (ради OP и будущих посетителей), что проблема заключалась в том, что метод jquery 'hover' принимает 2 функции в качестве аргументов - один для выполнения, когда мышь переходит, а вторая, когда мышь выходит из элемент. – Jamiec

+1

@Jamiec Спасибо, я не очень подробно объяснил, я уточню свой ответ – rwacarter

+0

Спасибо Jamiec, я начал с примера на api.jquery.com/hover, чтобы попытаться построить это. Затем я попытался включить в него утверждение if. Я не понял, что было два аргумента для зависания. – user61629

1

Нет необходимости добавлять и удалять материалы при наведении указателя мыши. Просто найдите все ячейки, соответствующие вашим критериям (используя jQuery's filter()), затем дайте им класс. Затем вы можете набрать .nomatch элементов по своему усмотрению. Здесь я добавил текст с тремя звездами при наведении в соответствии с вашими требованиями.

$(function(){ 
 
    var key = "NO"; 
 
    var $cellsBeginWithNo = $("td").filter(function(){ 
 
    var $this = $(this); 
 
    if($this.text().indexOf(key) === 0){ //if text begins with [key] 
 
     $this.addClass("nomatch");  //give it a class 
 
     return $this;     //add it to our collection 
 
    } 
 
    return false; 
 
    }); 
 
    /* 
 
    Now you have a jQuery collection of matched elements that you can apply further functions to if you like. EG: 
 
    $cellsBeginWithNo.on("click", function(){alert("click");}); 
 
    */ 
 
});
td.nomatch { 
 
    background-color:#ffeeee; 
 
} 
 
td.nomatch:hover:after { 
 
    content : " ***"; 
 
    color: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
     <td><input type="checkbox" name="check[]" value="265"></td> 
 
     <td>265</td> 
 
     <td>NO MATCH</td> 
 
     <td>NO MATCH</td> 
 
     <td>No</td> 
 
     <td>0</td> 
 
     <td>f79a8316891</td> 
 
    </tr> 
 
</table>

+0

Спасибо, очень ценим. – user61629

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