根据链接的名称属性查找href值

时间:2014-01-27 14:07:18

标签: jquery

我的网页上有两种类型的链接:

<div id="mybookings">
<a name="type1ID" href="4007" class="booking-deleteDraft">Delete Me</a>
<a name="type2ID" href="9001" class="booking-deleteDraft">Delete Me</a>
</div>

我正在写一个ajax提交,需要在POST中包含正确的数据。我如何要求JQuery执行以下操作:

    $("#mybookings").on('click', '.booking-deleteDraft', function (e) {
    e.preventDefault();
     data: {
             Type1ID: $(this).attr("href").val() // This gets the value of the href, but it should only get it where the name attribute is "type1"
             Type2ID:  $(this).attr("href").val() // This gets the value of the href, but it should only get it where the name attribute is "type2"
           },
.....

如何在Type1ID和Type2ID参数中获取正确的值?

4 个答案:

答案 0 :(得分:5)

使用此css选择器a[name="type1"]a[name="type2"]

data: {
     Type1ID: $('a[name="type1"]').attr("href") // This gets the value of the href, but it should only get it where the name attribute is "type1"
     Type2ID:  $('a[name="type2"]').attr("href") // This gets the value of the href, but it should only get it where the name attribute is "type2"
   },

答案 1 :(得分:1)

$('a[name="type1"]').prop('href');

答案 2 :(得分:1)

你有一个与jQuery绑定的click事件处理程序,可能看起来像这样:

$('a.booking-deleteDraft').on('click', function(e) {
    //Do stuff here.
});

我建议做以下事情:

$('a.booking-deleteDraft').on('click', function(e) {
    var $this = $(this),
        type = $this.attr('name'),
        href = $this.attr('href'),
        data = {};

    data[type] = href;

    //Append any additional data to the data object here.

    //You could use $.post or $.get here too.
    $.ajax({
        //Your ajax options.
        data: data //Send the data object here.
    });
});

现在,您的任何booking-deleteDraft链接都会自动处理。

编辑如果您需要密钥为type1ID而不是type1,则只需附加'ID'

data[type + 'ID'] = href; 

警告

如果直接在数据库查询中使用此值,则需要在服务器端清理它。这里的值很容易被操纵,允许滥用用户指定数据库表的几乎任何字段及其值。如果您没有使用预准备语句,它还可以打开SQL注入。

将服务器端接收的值与有效值列表进行比较。

答案 3 :(得分:-1)

如果你有基于数据库中的条目或类似的东西删除链接.. 你可以试试这个:

$("#mybookings").on('click', '.booking-deleteDraft', function (e) { 
       e.preventDefault(); 
       data: {
            $(this).attr("name"): $(this).attr("href");
         });