如何在jQuery中执行此操作?

时间:2009-12-11 10:29:51

标签: javascript jquery html

我必须在copyToLeft内所有图像的onClick事件上附加方法TD。 TD位于名为mismatchList的表格内,因此结构变为此mismatchList > tbody > tr > td > img

虽然我已经这样做了,但那是使用普通的javascript。我做的是,我在创建时在所有指定元素的copyToLeft(this);事件上手动添加了onClick方法。 [这是我想省略并使用jQuery以某种方式执行此操作的步骤]。

copyToLeft的定义如下: -

function copyToLeft(obj){
    leftObj = getLeftTD (obj);  // my method which returns the adjacent Left TD
    rightObj = getRightTD (obj);

    if ( leftObj.innerHTML != rightObj.innerHTML ) {            
        leftObj.innerHTML = rightObj.innerHTML;
        leftObj.bgColor = '#1DD50F';
    }else{
        alert ( 'Both values are same' );
    }
}

如果需要,copyToLeft方法的定义也可以更改。 [以防你认为,jQuery可以用来使这个方法更好:)]


修改

而不是问另一个问题我只是添加新的要求:) [让我知道我是否应该创建新的一个]
   我必须像我指定的那样向所有图像添加copyToLeft方法,但是该图像应该是left_arrow.gif,如果src是copyToRight,则添加right_arrow.gif方法。另外,我们如何在jQuery中获取相邻的左/右TD,因为我想重新定位getLeftTDgetRightTD方法?

3 个答案:

答案 0 :(得分:4)

如果我已经正确地理解了你的问题,那么在jQuery中你可以将事件绑定为:

$(document).ready(function() {
    $('mismatchList > tbody > tr > td > img').click(copyToLeft);
});

copyToLeft功能中,您不接受obj作为输入参数,而this将是图像。 $(this)将是一个jQuery对象,包含图像,如果需要它...

答案 1 :(得分:1)

试试这段代码:

<table id="tbl">
    <tbody>
    <tr>
        <td></td><td><img src="file:///...\delete.png" /></td>
    </tr>
    <tr>
        <td></td><td><img src="file:///...\ok.png" /></td>
    </tr>
</tbody>
</table>

<script type="text/javascript">
    $(document).ready(function(){
        $("table#tbl img").click(function(){
            var td=$(this).parents("td");
            var tr=$(td).parents("tr");
            var left=$(td).prev("td");

            $(left).html($(td).html());
        });
    });
</script>

答案 2 :(得分:1)

你可以做这样的事情来匹配图像src。

$('#mismatchList > tbody > tr > td > img[src='left_arrow.gif']').click(copyToLeft);
$('#mismatchList > tbody > tr > td > img[src='right_arrow.gif']').click(copyToRight);

值得注意的是,匹配图像src的部分确实使用了src的全部内容,因此如果将图像移动到其他目录,它将停止工作。如果您只想匹配源的结尾,则可以使用$ =而不是仅使用=。

以下是TheVillageIdiots重写左侧复制功能的变体。

function copyToLeft() {
    var cell = $(this).closest('td');
    var leftObj = cell.prev();
    var rightObj = cell.next();

    if ( leftObj.html() != rightObj.html()) {                        
        leftObj.html(rightObj.html());
        leftObj.css('background-color','#1DD50F');
    } else {
        alert ( 'Both values are same' );
    }
}

我的一部分也认为只有一个copyToSibling函数才有意义,你检查$(this).attr('src')是否为left_arrow.gif或right_arrow.gif并相应地采取行动,而不是两个我以前发过的选择器。

相关问题